发布网友 发布时间:2022-04-23 03:23
共7个回答
热心网友 时间:2022-04-28 12:57
#include <stdio.h>
main()
{
int a = 1, b = 0;
switch(a)
{
case 1:
switch(b) //执行到这里
{
case 0:printf("**0**");break; //输出
case 1:printf("**1**");break;
}//注意!这里的switch并没有break;所以继续向下执行,执行了 printf("**2**");,虽然a不等于2,但是由于没有Break会继续向下执行的,这就是为什么switch(b)里要加两个break的缘故,没有break会向下执行而不是跳出选择
case 2:printf("**2**");break;
}
}
热心网友 时间:2022-04-28 14:15
#include <stdio.h>
main()
{
int a = 1, b = 0;
switch(a)
{
case 1:
switch(b)
{
case 0:printf("**0**");break;
case 1:printf("**1**");break;
} break; //这里加一个break;语句,因为你整个switch(b){ }执行完之后没有break;,所以其后面的case 2 也会执行
case 2:printf("**2**");break;
}
}
热心网友 时间:2022-04-28 15:49
我来回答为什么会执行 printf("**2**");
switch(a)
case 1: switch(b){} switch(b)作为一个语句块 在这个语句后必须加一个break; 来跳出case1 不然程序还会继续往下执行case 2的语句 这样就有了答案的结果
热心网友 时间:2022-04-28 17:41
注意第一个case 1:后没有break语句。也就是说,进入这个case 1后,执行case 0,遇到break于是跳出一个switch语句(内层的那个),这个switch之后没有break,于是继续执行case 2,当然后打印出**2**
热心网友 时间:2022-04-28 19:49
switch(a)
{
case 1:
switch(b)
这里是个嵌套
热心网友 时间:2022-04-28 22:13
switch(b)
{
case 0:printf("**0**");break;
case 1:printf("**1**");break;
case 2:printf("**2**");break;
}
热心网友 时间:2022-04-29 00:55
这很简单呀,记住,C中的每一个switch语句中的case语句后面都必须有break;语名,不然就会跟你想像的不一样了,这就是为什么上面输出了**2**的原因,如果你在switch(b)语句后加上break; 语句,相信会和你的预期的结果一样的。