鱼C论坛

 找回密码
 立即注册
查看: 1202|回复: 8

[已解决]switch语句

[复制链接]
发表于 2020-9-2 17:59:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int i=10;
switch(i)
{case 9: i+=1;
case 10: i--;
case 11: i*=3;
case 12: ++i;
执行下面程序段后,i的值是多少?
最佳答案
2020-9-2 18:42:45
           int i=10;
                switch(i)
                {
                case 9: i+=1;
                case 10: i--; // 初始i为10, 执行i--,i = 9 
                case 11: i*=3; // 继续执行,i = i * 3 = 27 
                case 12: ++i; // 继续执行, ++i, i = 28 
                }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-2 18:42:45 | 显示全部楼层    本楼为最佳答案   
           int i=10;
                switch(i)
                {
                case 9: i+=1;
                case 10: i--; // 初始i为10, 执行i--,i = 9 
                case 11: i*=3; // 继续执行,i = i * 3 = 27 
                case 12: ++i; // 继续执行, ++i, i = 28 
                }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-2 21:12:34 | 显示全部楼层

i=9之后,不是该执行case9吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 21:32:17 | 显示全部楼层
雨天Zz 发表于 2020-9-2 21:12
i=9之后,不是该执行case9吗?

不是程序如果没有特殊情况都是从上往下运行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 21:33:32 | 显示全部楼层
遇到case语句,如果没有break,就运行到最后一个case,如果有default就运行到default,接着就退出switch
如果遇到break就会退出switch语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-2 21:43:51 | 显示全部楼层
雨天Zz 发表于 2020-9-2 21:12
i=9之后,不是该执行case9吗?

楼下正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-3 10:23:27 | 显示全部楼层
雨天Zz 发表于 2020-9-2 21:12
i=9之后,不是该执行case9吗?

2楼就是你要的最佳答案,理由:4楼已经解释很清楚了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-4 10:44:48 | 显示全部楼层
本帖最后由 LuLD 于 2020-9-4 10:52 编辑
雨天Zz 发表于 2020-9-2 21:12
i=9之后,不是该执行case9吗?


           int i=10;
                switch(i)        // i 只会在这里判断一次,而后跳到指定的段,之后不管 i 的值符合case 那个值,都不会再跳转,只会从上而下依次执行
                {     
                    .....
                    case 9: i += 1;// 就算 把 case 9 放在 case 10 的之后的某段中,也不会进行跳转的,不同于 goto
                }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-4 11:28:15 | 显示全部楼层
雨天Zz 发表于 2020-9-2 21:12
i=9之后,不是该执行case9吗?

你的程序没有 break 语句,执行完 case 10 后,本次循环没有被中止,程序就往下执行,即执行 case 11、csae12,然后再返回 switch 语句,进行判断,此时的 i 已经为 28了,不满足任何 case 情况,程序就此中止。若要程序能够执行 case 9 ,程序需做如下修改:
int i=10;
switch(i)
{case 9: i+=1;break;
case 10: i--;break;
case 11: i*=3;break;
case 12: ++i;break;

这样程序执行完 case 10 后,i = 9,由于有 break 语句,程序中断本次循环,不再往下执行,便返回 switch 语句进行判断,此时的 i = 9 ,符合 case 9 的条件,执行 case 9 语句,使得 i 再次等于 10,你的程序便进入了死循环了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 02:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表