有一道c语言的题,答案不知道怎么来的,求解啊。

#include <stdio.h>
int main(int argc, char *argv[]){ int a=16,b=21,m=0; switch(a%3) { case 0:m++;break; case 1:m++; switch(b%2) { default:m++; case 0:m++;break; } } printf("%d\n",m);}

%是取余运算符,在程序中,首先执行第一个switch语句,a%3的结果是1,所以执行case 1:m++; 后,m的值为1,然后,进入第二个switch语句,b%2的结果也为1,所以先执行default:m++; m的值再加1,变成2,但是在default后面并没有break,因此循环并没有结束,继续执行 case 0:m++;break; ,所以m的值变为3之后才跳出循环,输出的m的值才为3,如果在default语句的后面加上break,则m的最后输出就为2了。
希望能够理解!!!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-27
LS说的不错.你在default后面没有添加break,所以在第二次switch判断的时候所有的case都执行了,也就是说m++执行了2次,最后m=3
第2个回答  2012-06-27
再看看#include<stdio.h>void main(){ int a=16,b=21,m=0; switch(a%3){ case 0:m++;break; case 1:m++; switch(b%2){ case 0:m++;break; } default:m++; } printf("%d\n",m);}
大家正在搜