第1个回答 2010-08-10
你的第一个case没有break,所以case 2:a++;b++;break会执行,a就变成2,b变成1了。
如果你在case 2:a++;b++;break;的上一行写上break;,就是你自己计算的结果。
第2个回答 2010-08-10
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y)
{
case 0:a++;break;
case 1:b++;break;
}
break;
case 2:a++;b++;break;
case 3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
第3个回答 2010-08-10
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1: //进入了 因为x=1
switch(y)
{
case 0:a++;break;//执行了 因为y=0,跳出后 a=a+1=1了
case 1:b++;break;
}
case 2:a++;b++;break;//由于case 中没有break (switch(y)中的break是跳出switch(y) 与switch(x)无关),所以这句执行了,使 a变成了2 ,b为1,然后跳出
case 3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
第4个回答 2010-08-10
呵呵,楼主粗心咯!
你这是个switch中有嵌套一个switch语句,第一个switch语句有三个case,嵌套的switch只有两个case。理解switch的执行过程,如果你每个case后面都不加上break 的话,那么将执行每一个case,而不管判断条件是否满足,你这个题目再执行了嵌套case0的时候结果a=,b=0,然后执行break,跳出嵌套的case,也就是外面case1,执行完毕,但后面没有braek ,所以继续执行case2,这样a=2,b=1,但后面有一个break,所以跳出,最终结果就是a=2,b=1,当然不符合楼主算的啊
呵呵
细心点