C语言程序结果输出问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 04:51:52
有如下程序:
main()
{ 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);
}

为什么输出结果是 a=2,b=1呢.

可否详细解答.
谢谢!
谢谢你的回答
有点明白了
可是继续执行的话 case 2!!!
x!=2啊

main()
{ int x=1,a=0,b=0;
switch(x) -------------------x=1,所以开始执行CASE1
{ case 0:b++;
case 1:a++;-------------------a++;a=1,没有BREAK,所以继续执行下面的语句
case 2:a++;b++; -------------------a=2,b=1
}
printf("a=%d,b=%d\n",a,b);
}

清楚了不?
BREAK的问题

x=1;所以从case 1执行,故a++后a=1;b没参与计算还是0.由于case中没有break;故case2继续执行,再经过a++;b++;后a=2;b=1;