急求这个程序结果
main()
{int a=15,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);
}
答案给的是1 我感觉不对 请高人指教
参考答案:答案的确是1,分析:
int main( )
{
int a=15,b=21,m=0;
switch(a%3) // 15%3的结果是0
{case 0:m++;break; // 符合case 0:执行m++,然后跳出switch(a%3)
case 1:m++; // 如果是case 1:的话才继续switch(b%2),因此不执行
switch(b%2)
{default:m++;
case 0:m++;break;
} // 这属于switch(b%2)
} // 由于case 0:之后的的break在switch(a%3)中,所以跳出switch(a%3)
// 直接打出m,此时m的值为1
printf("%d\n",m);
}
break的作用是跳出当前循环体并直接执行之后的语句,如果用在嵌套循环的内层循环中则是跳出内层循环并继续执行外层循环,注意一次只能跳出一个循环。
用在switch中则是跳出当前switch的作用域如:
switch(){/*作用域*/},如果执行完case语句后没有加上break语句则程序会继续执行当前case之后的其他语句如:
switch(a){
case 1: ......;break;// 执行后跳出switch(a)
case 2: ......;// 执行后继续执行case3及以后的case直到遇到break
case 3: ......
.
.
.
.
}