因为最上面的switch的case 1 和case 0后面没有break,所以他们都可以执行;但是case 1 和case 0 里面的switch的case有break,所以在执行了匹配的case后会退出。
具体过程是:
首先,执行第一个switch 根据a的值1,执行case 1,然后这个case 1里面的swich 匹配b的值,b=2 ,匹配到这个swicth的 case 2 ,所以打印 “!”;
然后,因为第一个case 1后面没有break ,继续执行下面的case 0 ,这个case 0 里的switch匹配c的值,c=2, 匹配到这个switch的case 2,打印“$”,;
接着,上面这个case 0也没有break,继续执行 default, 打印“&”.
最后,第一个switch退出,打印最后的换行符。
#include <stdio.h>
int main(void){
int a=1,b=2,c=2;
switch(a){
case 1:switch(b){
case 1:printf("@");break;
case 2:printf("!");break;
}
case 0:switch(c){
case 0:printf("*");break;
case 1:printf("#");break;
case 2:printf("$");break;
}
default:printf("&");
}
printf("\n");
return 0;
}