我有以下switch
和break
,但没有case
:
char c = 'a';
switch(c) {
break;
case 'a' : cout << 'a' << endl;
break;
case 'b' : cout << 'b' << endl;
break;
default : break;
}
为什么此代码段显示a
?仅遇到第一个break
语句后,开关不应该中断吗?
第一个break
被忽略。
[在switch(c)
处,运行时跳至case 'a'
作为c=='a'
。之前的所有内容都将被忽略。
这就是case 'b'
在不打印'a'
的情况下工作的原因,这就是为什么switch
块中的变量定义不被接受的原因:
int n=0;
switch (n)
{
int k=n;
case 0:
return k; // UB
}