有以下程序
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++;break;
case 3:a++,b++;
}
printf("a=%d,b=%d\n",a,b)
运行结果为a=2,b=1
请注意我打问号的地方!!!!
请注意看以下解析:
首先进入第一个switch(x)语句判断,进入case1中进行嵌套判断switch(y)也成立a自加1,遇到break,退出嵌套,接着执行case2,a自加为2,b自加为1,遇到break结束此循环,此时a=2,b=1
a的自加是先执行后在自加,当此程序a自加的时候没有执行其他语句啊??????
另外!!!!!!
我的课本上说:计算switch后括号内表达式的值然后用该值逐个与case后的常量表达式进行比较,当找到匹配的值时就执行该case后面的语句。所有case中没有匹配的就执行default后面的语句
但是实际操作和上面的解析中并没有像书上所说的执行啊,执行完第一个后a的值为1 为什么有执行case 2了呢???????????a的值又不等于2
在执行case的时候是不是要判断case后面的值啊,怎么判断?????????
C语言中,switch语句的使用格式如下:
switch(表达式)
{
case 常量表达式1 : 语句1; break;
case 常量表达式2 : 语句2; break;
......
case 常量表达式n : 语句n; break;
default : 语句n+1;
}
举例如下:
int i=4, a=0;