螺纹钢期货贴吧:一道简单的C题目

来源:百度文库 编辑:神马品牌网 时间:2024/05/08 15:10:41
下列程序的输出结果是______。

#include <stdio.h>
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++; }
printf("a=%d,b=%d\n", a, b);}

a=2,b=1
我不太理解,不知道为什么连case2也执行了,前面不是有break吗
请解释一下,谢谢!!

你仔细看一下这个括号
break只是跳出第一个case1
要全部跳出的话就要在case 1: b++; break; }后面再加个break

注意switch(y)的括号范围是两句,后面的case2不在范围内了,而switch(x)的case 1 后面没有break,因此后面的也要执行。

因为第一次执行内层SWITCH的CASE1即A++后跳出来再执行外层SWITCH的CASE2所以A=2,B=1.

break 是结束switch(y) 和 return 不一样。