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

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

小菜请高手指点!

你理解的是正确的,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语句就更加简洁直观,可读性也更强
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-19
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;
}
第2个回答  2012-08-13
基本等效于if-elseif-else,在实质上,也就是说,代码译成机器二进码后,也许根本就没有不同。

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

事实上switch case就是对多分支的条件判断进行的方便性的写法。
第3个回答  2012-08-13
关键点在你的break那里,如果不加的话,当i=1时,他会执行到i=2那一行才结束的,还有一种是最恶搞的goto语句,一般都很坑人的,你可以试试
第4个回答  2012-08-13
是的,就是你说的那样比较
这个比if看起来更直观,可读性也更强,尤其是情况比较多的时候

C\/C++中的switch case 语句是怎样的一个执行过程
你理解的是正确的,switch case语句完全可以用if else语句来替换掉;但是当比较较多 或者很多其他控制流程的时候,switch语句 的可读性比if else语句高的多;另外注意的就是 一般情况下每一个case 之后都要跟一个break; 其目的是为了跳出switch语句块去执行switch后边的语句;但是实际项目中多出现这种情况...

c++中的switch语句怎么用
1没有break语句,因此继续执行case 2,y=y*2=1*2=2。3、由于第一个case 1分支也没有break语句,继续执行case 2:x++,y++,执行后的结果是:x=3,y=3。4、由于case 2分支也没有break语句,因此执行case 3:x*=2,y*=2,执行后的结果是:x=6,y=6。5、跳出switch语句后打印,输出x...

c++ switch case 的用法
通常只需要执行一个case语句,这需要通过goto,return,break,continue等语句来转移到switch之外。这里用的是break语句,如果把第一个break去掉,而的范围又在0-1000之间,这时不但会输出x,还会执行下一个case语句,输出 0.9*x。3,如果控制表达式的求值结果不等于任何的case入口,则会转移到default语句(...

状态机编程实例-嵌套switch-case法
2.1.3 两层switch-case状态机完整代码 2.2 主函数 两层switch-case状态机逻辑编写好之后,还需要将状态机运行起来。运行状态机的本质,就是周期性地调用状态机(上面实现的两层switch-case),当有事件触发时,设置对应的事件,状态机在运行时,即可处理对应的事件,从而实现状态的切换,或是其它的逻...

求助:C\/C++中switch case的用法!
Sunday\\n"); break; default:printf("error\\n"); } return 0;}在使用switch语句时应注意以下几点:1.每个case后的语句执行完成后,都应该有break语句;否则程序会顺序执行下面的case,直到遇到第一个break时跳出。2.在case后的各常量表达式的值不能相同,否则会出现错误。3.在case后,允...

在c++中switch与case语句 翻译成中文怎么理解
你都知道到这里问了,就不知道用百度查吗,switch英文是开关,切换的意思,case是事情,情况,案件的意思,switch(c){case A: ...; case B:。。。} 意思是当c所代表的事情或情况和A一样时,就切换到处理A后面的要做的事情,和B一样就切换到处理B后面的事情 ...

c++ case语句的问题
从default:处执行,输出Z 这道题就是要你知道一旦从某个case段开始执行,直到遇到break或return,switch语句才停止。如果要单独输出case的话,就要改为:switch(n){ case 1: break;case 2: cout<<'X'; break;case 3: break;case 4: cout<<'Y'; break;default:cout<<'Z'; break;} ...

C++,case语句的问题
(1)首先是case 1的1为什么没有引号。这个是switch()函数的要求格式,传进来的参数是什么类型,case后跟的就是什么类型.这里传进来的整形,所以case 后的1不加引号.加引号的可能就是判断字符类型,case后就加引号.(2)输出结果为什么是4、5,我简单给你走一遍流程吧。首先第一个传进来的i++的值,其实...

C语言 c++ 运行程序后 输出的结果是什么 case do while
case 如果没有break,那么就会从当前case执行遇到break或者switch循环结束。比如以此题为例,当循环到c=e时,循环从case ‘e’:case ‘E’;开始执行,直到default结束。当c=i时,循环从case ‘i’:case ‘I’;开始执行,直到default结束。

c++关于switch case 中case问题
执行完一个case语句后,如果没遇到break,程序会接下来顺序执行其他的case语句。就说算2009年12月29日这一天是这一年的第几天来说吧。执行顺序是这样的:由于是12月份,以case 12为入口,先把11月的30天加到累计天数的numofday里,然后遇到执行case 11后面的语句,把10月份的31天加到numofday里,...

相似回答