#include void 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("#");}}}请问是怎么输出的?

来源:学生作业学帮网 编辑:学帮网 时间:2024/06/09 13:15:24

#include
void 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("#");
}
}
}
请问是怎么输出的?

它里面有一个递归调用:
当X=0时,执行case 0:进入
switch(y==2)
{case 1 :printf("*");break;
case 2 :printf("%");break;
}
因为里面只是一个比较过程,而没有所要执行的值,switch()中没有找到匹配的就按顺序执行下去,遇到case 1 :printf("*");break;输出一个“*”;跳出;
接下来执行,case 1:switch(z),(说明:z=3)
找到case 3,而现在没有只能找最后一个default:printf("#");
所以最后只执行default:printf("#");
最后输出 * #;
完毕.理解否?