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 我很菜啊

问题描述:

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 我很菜啊

1. switch结构分支没加break;跳出语句,开始执行后,程序由x=1调到case 1 分支 a++(a由0自己加为1),由于没有break语句,程序继续执行到case 2 分支 a++ b++(a由1自加变2,b由0自加为1),之后程序printf输出 a=2 ,b=1
2.添加break后,结果是a=1,b=0
#include "stdio.h"
main()
{
\x09int x=1,a=0,b=0;
\x09switch(x)
\x09{ case 0 : b++ ; break ;
\x09 case 1 : a++ ; break ;
\x09 case 2 : a++ ; b++ ; break ;

\x09}
printf("a=%d,b=%d\n",a,b);
}