C/C++中的switch case 语句是怎样的一个执行过程

如switch(i){case1:……(要执行的语句)break;case2:……break;…………casen:……break;}i是从上往下逐个和1比较,在和2比较,... 如switch(i){case 1:……(要执行的语句)break;
case 2:……break;
…………
case n:……break;}
i是从上往下逐个和1比较,在和2比较,……直到找到符合的条件,才进入case后的执行语句的吗?这样的比较和if-elseif-else有什么不同吗?
还是有什么其他的比较方法,然后直接进入case语句执行……跳出。

小菜请高手指点!
展开
 我来答
jackou20057
推荐于2017-09-24 · TA获得超过998个赞
知道小有建树答主
回答量:199
采纳率:100%
帮助的人:274万
展开全部
你理解的是正确的,switch case语句完全可以用if else语句来替换掉;但是当比较较多 或者很多其他控制流程的时候,switch语句 的可读性比if else语句高的多;另外注意的就是 一般情况下每一个case 之后都要跟一个break; 其目的是为了跳出switch语句块去执行switch后边的语句;但是实际项目中多出现这种情况
switch(i)
{
case 1:
case 3:
case 5:
……; //这里当i等于 1 3 5 时都会执行
break;//直到这里退出
case 2:
(1)……;
case 4:
(2)……;
case 6:
(3)……;//这里i 等于2时会执行(1)(2)(3); i 等于4时会执行(2)(3); 等于6时只会执行(3)
break;
case 9:
break;
default:
break;
}
类似于上边的这种逻辑 如果用if else语句控制起来就会很麻烦,且可读性太差,而用switch语句就更加简洁直观,可读性也更强
198901245631
推荐于2017-09-19 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1739万
展开全部
c语言中switch语句中,只要不出现break,所有满足条件的,都会将结果输出。举例如下:
switch(i)
{
case 1:
case 3:
case 5:
……; //这里当i等于 1 3 5 时都会执行
break;//直到这里退出
case 2:
(1)……;
case 4:
(2)……;
case 6:
(3)……;//这里i 等于2时会执行(1)(2)(3); i 等于4时会执行(2)(3); 等于6时只会执行(3)
break;
case 9:
break;
default:
break;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哎呀……18a91a6
2012-08-13 · TA获得超过4.2万个赞
知道大有可为答主
回答量:7246
采纳率:76%
帮助的人:3044万
展开全部
基本等效于if-elseif-else,在实质上,也就是说,代码译成机器二进码后,也许根本就没有不同。

C语言的很多语句都是可以代用和换用的,之所以有多种写法,那只是为了程序员方便,也为了代码的可读性和可查对校正性。
就象我们生活中,对某事的描述可以用不同的词句一样。

事实上switch case就是对多分支的条件判断进行的方便性的写法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
answer19831020
2012-08-13 · 超过44用户采纳过TA的回答
知道答主
回答量:122
采纳率:100%
帮助的人:97.1万
展开全部
关键点在你的break那里,如果不加的话,当i=1时,他会执行到i=2那一行才结束的,还有一种是最恶搞的goto语句,一般都很坑人的,你可以试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e96ae71ed
2012-08-13 · TA获得超过728个赞
知道小有建树答主
回答量:1548
采纳率:0%
帮助的人:724万
展开全部
是的,就是你说的那样比较
这个比if看起来更直观,可读性也更强,尤其是情况比较多的时候
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式