本帖最后由 18343105017 于 2016-6-23 22:06 编辑
细节:1):break是可以省略的,如果省略了就一直执行到遇到break为止; 2):switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种; 3):default可以写在switch结构中的任意位置; 1.case default的匹配工作只做一次 2.一旦进入代码区,就是从头执行到尾直到遇到break
例1:
int a=1;
switch (a) {
default:
printf("exe default\n");
case 1:
printf("exe case 1\n");
case 2:
printf("exe case 2\n");
}
结果:
exe case 1
exe case 2
如果匹配不到case 就走default进入代码区,代码区是啥?就是除了前面case default剩下的部分
int a=1;
switch (a) {
default:
printf("exe default\n");
case 2:
printf("exe case 2\n");
case 3:
printf("exe case 3\n");
}
这里没有匹配到case就从default进入代码区,代码区就是
printf("exe default\n");
printf("exe case 2\n");
printf("exe case 3\n");
所以结果就是
exe default
exe case 2
exe case 3
你这样放
case 2:
printf("exe case 2\n");
default:
printf("exe default\n");
case 3:
printf("exe case 3\n");
没有匹配到case从default进入代码区
结果就是
exe default
exe case 3
这就是switch本来应该执行的顺序,每个case后面的代码本来都是连在一起的,代码部分就是一个整体,从头执行到尾
可是代码区里面插入了break,打破规则,让每个case独立感觉像是一个分支,执行完就结束
printf("exe case 2\n");
break;
printf("exe default\n");
break;
printf("exe case 3\n");
break;
有了break的代码区变成了一段一段的,从而产生错觉,感觉像是分支,还纠结究竟执行哪个,其实没有break捣蛋,只要进入代码区,管它啥从头执行到尾
|