一道C语言题目求解释!

来源:百度知道 编辑:UC知道 时间:2024/06/14 21:16:50
#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)
{
default:m++;
case 0:m++;break;
}
}
printf("%d\n",m);
}

输出什么?
为什么会输出这个?

输出: 3

原因:
switch(a%3) //a=16,a%3=1
{
case 0:m++;break;
case 1:m++; //进入这个分支,m++后m为1
switch(b%2) //b=21,b%2=1
{
default:m++; //进入这个分支,m++后m为2
case 0:m++;break; //由于上一句的default处理后,没有进行break,所以又进入这个分支,m++后m为3
}
}

3

switch(a%3)
{
case 0:m++;break;
case 1:m++;
//至此,由于a%3==1;所以m==1;
switch(b%2)
{
default:m++; //m==2 由于没有break 程序继续
case 0:m++;break; //m==3
}
//so i guss m==3 right?