为了账号安全,请及时绑定邮箱和手机立即绑定

为啥在switch 分支语句中,default 的位置.对结果有没有影响?

为啥在switch 分支语句中,default 的位置.对结果有没有影响?

C++ C
波斯汪 2022-05-18 19:15:42
比如说这个程序:#include <stdio.h>main(){  int c=0,k;  for (k=1;k<3;k++)    switch (k)    { default: c+=k;case 2: c++;break;case 4: c+=2;break;    }  printf("%d\n",c);}和这个程序:#include <stdio.h>main(){  int c=0,k;  for (k=1;k<3;k++)    switch (k)    { case 2: c++;break;case 4: c+=2;break;    default: c+=k;}  printf("%d\n",c);结果一样吗?
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

无论 default 位置在前在后,都是先判断 各个case, 最后进 default。

无论 进入某个 case 或 default,程序要 执行到 break,或开关的结束 才终止。

例如:
int c=0,k;  
k=1;
switch (k)    
{
case 1: c+=k;// 满足 case 1 进入条件,但这 行 没遇到 break
case 2: c++; break; // 于是 还要 走过 case 2: c++;直到遇break;
case 4: c+=2;break; 
} 

例如:
int c=0,k;  
k=1;
switch (k)    
{
default: c+=k;// 不满足 case 2,4 于是 进入,default, 但这 行 没遇到 break
case 2: c++; break; // 于是 还要 走过 case 2: c++;直到遇break;
case 4: c+=2;break; 
} 

所以开关语句里的 break 是很重要的。而 case/default 的次序是次要的。



查看完整回答
反对 回复 2022-05-23
?
跃然一笑

TA贡献1826条经验 获得超6个赞

你的做法显然是会有影响的
一般的建议对于default也要使用break,这样位置的问题就不会存在

查看完整回答
反对 回复 2022-05-23
  • 2 回答
  • 0 关注
  • 199 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信