c++的高手们,谁能告诉我这个程序是怎么回事

来源:百度知道 编辑:UC知道 时间:2024/06/08 19:04:16
#include "stdio.h"
void main()
{
int a=15,b=21,m=0;
switch(a%2)
{
case 0:m++;
break;
case 1:m++;
switch(b%3)
{
default:m++;
case 0:m--;
break;
}
}
printf("%d\n",m);
}
我觉得这个程序输出是1,可结果却是2,为什么?还有那个default怎么用?
啊,打错了,输出结果是0,可是为什么不是1呢?

%是求余数,这个没有问题吧

a%2 = 1,第一次switch的结果是case 1,所以运行m++,m值变成1. 因为case 1的后面没有break语句所以继续执行接下来的语句,即第二个switch.

b%3 = 0,第二次switch的结果是case0,运行m--,m值又变成0;

你运行的结果是2?什么编译器啊。
如果运行的结果是2,微软要倒闭了。
稀烂的班子,这样的问题应该去看书!

结果是2? 哪个编译器的结果?还是书上说的或者老师随口说的?

明明是0,default是当所有的和它处于同一switch内的条件都不满足时才执行的语句。