c语言switch语句

有以下程序
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后面的值啊,怎么判断?????????

第1个回答  2019-04-08
#include"stdio.h"
main()
{int
i,x;do{printf("输入成绩:\n");scanf("%d",&x);}while(x>100||x<0)
i=x/10;
switch(i)
{case
10
:
printf("A");break;
case
9
:printf("A");break;case
8
:printf("B");break;case
7
:printf("C");break;case
6:printf("D");break;default
:printf("E");}
}
第2个回答  2019-01-17
定义
n1、n8、n9、n0为int并赋初始值为0.定义fs为浮点型。
输入一个数并给了fs.
swicth()
{

case
8:

case
9:
case10:

……

default
:
}
为循环语句;
就是当fs/10等于8、9、10时,n8=++n8;n9=++n9;n10=++n10;
不等于它们时就执行n1=++n1;
相似回答