【发布时间】:2021-05-15 01:45:52
【问题描述】:
我们使用带开关的案例。但是这里的情况是在默认情况下,所以它应该需要一个更多的开关。但是代码没有给出任何编译时错误。
#include<iostream>
int main()
{
int num=4;
while (num)
{
switch(num)
{
default:
case 1:
std::cout<<"Executing "<<num<<"\n";
case 2:
case 3:
break;
}
num--;
}
return 0;
}
此外,输出是 Executing 4,然后是 Executing 1。根据我的说法,输出应该是 Executing 1,因为每次都输入默认值。当值为 1 时它将进入 case 1。但首先请解释这是如何编译的,因为根据我的说法应该有一个嵌套开关。
【问题讨论】:
-
“里面”?不,他们都在同一个领带上。 C++ 不关心你的缩进(不像
python)。在switch上方添加std::cout << num << '\n';,就会清楚发生了什么。 -
误导性缩进。 default 和 case 1 处于同一级别。如果你不在案件之间休息,他们就会失败。因此 1 或 default= 任何不是 2 或 3 的东西都会打印出来。
-
这只是错误的缩进。
cases 来自switch,它们与default处于同一级别。 -
我被困在这个问题上已经有一段时间了。非常感谢你们。
标签: c++ switch-statement