哪位好心的大神帮忙讲下C语言的题,我是一个初学的菜鸟,拜托了

int main(void)
{
int x=1,a=0,b=0;
switch(x)
{
case 0: b++;
case 1: a++;
case 2: a++,b++;
}
printf("a=%d,b=%d\n",a,b);
return 0;
}

谁能告诉我为什么a=2,b=1;拜托了

这道题的关键在switch函数这里,因为x=1,所以函数可以这样看:

switch(1)
{
case 0: b++;
case 1: a++;
case 2: a++,b++;
}

1、现在开始进入switch函数。因为函数的判断条件是1,所在选择条件中从1的项开始运行,即a++;此时a=1,b=0;

2、因为函数中没有break语句,所以继续执行case 2。执行a++;b++

此时a=2,b=1;

3、输出a和b就是a=2,b=1了


注:

1、你要知道,如果判断语句能对应下面的选择语句,那么就要从配对的那句话开始执行,剩下的条件也必须执行完。

2、如果执行途中遇到了break,这时才会停止执行。例如:如果本题是这样:

switch(1)
{
case 0: b++;
case 1: a++;break;
case 2: a++,b++;
}

那么当程序执行玩case 1后就会停止switch语句了,而不会执行case 2

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-27
switch语句,每个子分支需要用break结束,否则执行完当前子分支会接着往下执行,知道退出switch或遇到break。追问

case 0: b++;
case 1: a++;
case 2: a++,b++;
0,1,2指的是什么

相似回答