一个C语言的简单问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 06:44:53
代码如下:
#include<stdio.h>
int main(void)
{
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;
case 3:a++;b++;
}
printf("\na=%d,b=%d",a,b);
return 0;
}

结果是a=2,b=1吗?为什么?希望解释一下,谢谢.
为什么需要执行CASE 2呢?程序中的X有自增吗?在哪个地方?

对的,先执行case1:swich语句,a增1.再执行case2:a增1b增1

#include<stdio.h>
int main(void)
{
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;
case 3:a++;b++;
}
printf("\na=%d,b=%d",a,b);
return 0;
}
第一个case1语句后面没有break;所以执行完后会继续执行后面的case2,它后面有break;停止执行。在第一个case1里面又有一个switch语句,其中y等于0所以执行一次a++;所以a就等于1了,后面停止,跳出到case2处,执行a++;b++;bread;后a就等于2,b就等于1了,再跳出去,最后的结果就是a=2,b=1。呵呵。不太会表达,你慢慢体会