首页 > 代码库 > switch...case的陷阱
switch...case的陷阱
switch...case的基本用法:
switch(表达式)
{
case 常量表达式1:
语句1;(可包含多个语句,可不加大括号)
break;
case 常量表达式2:
语句2;(可包含多个语句,可不加大括号)
...
default:
语句;(可包含多个语句,可不加大括号)
}
书上会这么说:
注意case后面的常量表达式是冒号。
注意default是所有case都不成立时候的默认执行语句。
注意case往往要跟上break。
好了,就是这个break,C#的同学请坐下,我知道C#的case是不能显式得贯穿到下一个case中,所以必须break。但是C++的可以,因此接到switch的C++程序,必须谨慎,这里很可能埋着个雷。
没有break,一旦满足中间的某个case以后,下面的case将会不讲理的全部执行,不管下面的case是否满足条件。
比如:
int main() { int s=0,k; for(k=7;k>=0;k--) { switch(k) { case 1: case 4: case 7:s++;break; case 2: case 3: case 6:break; case 0: case 5:s+=2;break; } } cout << s; }如果你得到的结果不是7,你可以看看下面的过程解释。
k = 7, case7运行后跳出,s = 1
k = 6, case6运行后跳出,s = 1
k = 5, case5运行后跳出,s = 3
k = 4, case7运行后跳出,s= 4
k = 3, case7运行后跳出,s = 4
k = 2, case6运行后跳出,s = 4
k = 1, case7运行后跳出,s = 5
k = 0, case5运行后跳出,s = 7
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。