#include<bits/stdc++.h>
using namespace std;
void show(int errorCause)
{
switch(errorCause)
{
case 1:
{
cout<<"in 1\n";
break;
}
case 2: break;
case 3:
{
cout<<"in 3\n";
break;
case 4:
{
cout<<"in 4\n";
case 5: cout<<"in 5\n";
break;
}
}
break;
default:
{
cout<<"in deafult\n";
break;
}
}
return;
}
int main()
{
show(5);
return 0;
}
我使用了这个代码示例,但我无法弄清楚它的流程。根据我的说法,它应该匹配默认条件,因为 errorCause 不匹配任何东西,但它的输出是:
in 5
我不明白为什么它不会进入默认状态?
这是我的构建环境的详细信息:
编译器: g++ 版本 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
系统: Ubuntu 14.04(64位)
最佳答案
你传递了 5,为什么 switch 语句不进入'case 5'?
为了清楚起见:删除 switch-block 中的所有这些花括号,它们都不是必需的。重新对齐和格式化代码,然后它应该清楚。
关于c++ - 这个开关 block 是如何执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40765174/