如何解决不带开关的case的使用,请解释这段代码的输出
我们使用带有 switch 的案例。但这里的案例在默认案例中,所以它应该需要多一个开关。但是代码没有给出任何编译时错误。
List<BluetoothGattService> services = gatt.getServices();
此外,输出是 Executing 4,然后是 Executing 1。据我说,输出应该是 Executing 1,因为每次都输入默认值。当值为 1 时,它会进入 case 1。但首先请解释这是如何编译的,因为据我说应该有一个嵌套的开关。
解决方法
在 switch
中,所有 case
和 default
都处于同一级别,您只是被(愚蠢?)缩进和相当不一致的默认使用所吸引。事实上,它应该是:
switch(num)
{
default:
case 1:
std::cout<<"Executing "<<num<<"\n";
case 2:
case 3:
break;
}
含义:如果为 2 或 3,则什么也不做(中断),并为 1 或任何其他值显示 Executing ...
。
这会做同样的事情,恕我直言更具可读性:
switch(num)
{
case 2:
case 3:
break;
default:
std::cout<<"Executing "<<num<<"\n";
}
,
case
1 到 3 缩进错误。
这就是所谓的“失败”。
如果 switch 遇到 default
情况,它将失败,直到遇到中断,这意味着它将在途中执行其他情况。
在您的情况下,如果遇到 default
情况,它将执行 case 1
、case 2
和 case 3
编辑:我建议以 break
结束每个案例并将 default
作为最后一个案例。
只有当您真的想深入了解并知道自己在做什么时,才可以省略 break
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。