龙井茶长毛了还能喝吗:一道简单的C题目

来源:百度文库 编辑:高考问答 时间:2024/04/27 15:46:10
下列程序的输出结果是______。

#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 不一样。