#include
void main()
{
int x = 1, y = 0, a = 0, b = 0;
switch (x)
{
case 1:switch (y)
{
case 0:a++; break;
case 1:b++; break;
}
case 2:a++; b++; break;
}
printf("a=%d,b=%d", a, b);
}
x==1,进switch(x)里的case1,y==0,执行switch (y)里面的case0:a++,这时a==1,然后break,退出switch (y),因为switch (x)的case1后面没有break,就会执行case2,a++,b++,最后a==2 b==1
第一层switch跟x的值有关,x=1则此时进入case 1,case 1里面有另外一个switch 是跟y相关的,y=0,则进入case 0的位置,此时进行的操作是a++,a变成了1,然后跳出这个switch,由于第一层switch case 1的情况是没有break的,则程序继续进入case 2,此时进行a++,b++,则a变成了2,b变成了1
没问题啊,内switch语句a先自加,a==1,然后跳出来a再自加,b也自加,a==2,b==1
可能是 case 2的上一行少个 break;
两次a++,a从0变为2;
一次b++,b从0变为1。
case 1:b++;break;这一句不执行
不知道你这个问题是否已经解决, 如果还没有解决的话: