c语言中switch语句

#include<stdio.h>
int main( )
{
int x=0,y=2,z=3;
switch(x)
{ case 0:switch(y==2)
{case 1:printf("*");break;
case 2:printf("%");break;}
case 1:switch(z)
{case 1:printf("$");
case 2:printf("*");break;
default:printf("#\n"); }
}
return 0;
}
为什么第二个switch 输出* 在线等 急急急!!!

y==2为真,返回1,switch(1),自然转到case 1执行,输出*号。追问

为什么之后还要执行case 1:switch(z)
{case 1:printf("$");
case 2:printf("*");break;
default:printf("#\n"); }

追答

外层switch的case 0没有break语句,所以会继续向下执行直到遇到break语句。

温馨提示:答案为网友推荐,仅供参考
相似回答