程序运行
#include <stdio.h>int main ( )
{
int a = 15, b = 21, m = 0;
switch (a % 3)
{
case 0: m++; break; 这个break是连下一个switch也跳出了吗,为什么不执行下面那个switch语句了
case 1:m++;
switch(b % 2)
{
default: m++;
case 0:m++; break;
}
}
printf("%d\n", m);
} 你这个程序想干什么,搞不懂
就你提出的问题,回答如下:
1、break 只在本作用域起作用,不会影响到作用域外其他的程序段
2、下面那么 switch 语句没有执行,并非是上面的 break ,而是因为你下面那个程序段,没有对应的 case,b % 2 = 21 % 2 = 1,下面只有 case 0,没有 case 1 风过无痕1989 发表于 2020-12-7 19:47
你这个程序想干什么,搞不懂
就你提出的问题,回答如下:
1、break 只在本作用域起作用,不会影响到作用 ...
哥们,我的记忆里switch 的 break;是跳出整个循环的。
不信你去调试一下,程序到break是直接到printf的 和下面的switch根本没有关系好吗
实在不行 你去看这个https://blog.csdn.net/Alices_zhu/article/details/82462982 城头有平安 发表于 2020-12-7 21:55
哥们,我的记忆里switch 的 break;是跳出整个循环的。
不信你去调试一下,程序到break是直接到printf的...
break跳出不是只跳出一个循环吗 风过无痕1989 发表于 2020-12-7 19:47
你这个程序想干什么,搞不懂
就你提出的问题,回答如下:
1、break 只在本作用域起作用,不会影响到作用 ...
那第二个switch里面的个default也不执行吗 本帖最后由 rt3 于 2020-12-8 13:57 编辑
第2个 switch是 在 执行 第1个 switch 语句的 case 1段时才会调用。
为了便于理解,对你的代码添加了一些缩进,以及几个用于调试的printf语句,并变更了a的值
#include <stdio.h>
int main ( )
{
int a = 16, b = 21, m = 0;
switch(a%3){
case 0:
m++;
break; //这个break是连下一个switch也跳出了吗,为什么不执行下面那个switch语句了
case 1:
m++;
switch(b%2){
default:
m++;
case 0:
printf("switch 2 case 0.\n");
m++;
break;
}
printf("switch 1 case 1.\n");
}
printf("%d\n", m);
}
rt3 发表于 2020-12-8 13:48
第2个 switch是 在 执行 第1个 switch 语句的 case 1段时才会调用。
为了便于理解,对你的代码添加了一 ...
但是我那个输出结果是1,这个是3呀 1447391641 发表于 2020-12-8 13:53
但是我那个输出结果是1,这个是3呀
输出3是因为修改了a的值。这样改是为了说明两个switch语句之间的从属关系。
改回去就输出1了。 rt3 发表于 2020-12-8 13:55
输出3是因为修改了a的值。这样改是为了说明两个switch语句之间的从属关系。
改回去就输出1了。
懂了 rt3 发表于 2020-12-8 13:55
输出3是因为修改了a的值。这样改是为了说明两个switch语句之间的从属关系。
改回去就输出1了。
这个是看花括号看出来的第二个switch在第一个switch里面吧 1447391641 发表于 2020-12-8 13:58
这个是看花括号看出来的第二个switch在第一个switch里面吧
是的 城头有平安 发表于 2020-12-7 21:55
哥们,我的记忆里switch 的 break;是跳出整个循环的。
不信你去调试一下,程序到break是直接到printf的...
break 是跳出当前的循环,怎么可能是跳出整个的循环?一个 switch 就是一个循环,怎么可能连下面那个循环都跳出?再举以下的例子:
for(i = 0;i < 10;i++)
{
for(j = 0;j < 10;j++)
{
. . .
break;
}
}
break 只能是跳出 j 循环,绝对不可能跳出 i 循环
风过无痕1989 发表于 2020-12-8 14:21
break 是跳出当前的循环,怎么可能是跳出整个的循环?一个 switch 就是一个循环,怎么可能连下面那个循环 ...
是的呀,进不去怎么跳,第一个break在外面那个大的循环里啊,直接跳出去了,没有机会进第二个switch的
你这个程序跳的也是和他相关的for啊,那个break和他相关的就是第一个switch。哥们实在不信你去单步走一下,单步走到那个break的时候,下一步直接是printf了{:10_245:}
页:
[1]