C语言里switch语句为什么case后面有的加Break有的不加?

如题所述

 java 中使用switch case语句需要加入break 做了具体的实例分析,及编译源码

在源码中分析应该如何使用,可以参考如下:

假设我们有如下这样一个switch语句:

当我们在执行上面的方法时,如果我们传入的参数是1,那么会输出1、2、3和default,如果传入的参数是2,那么会输出2、3和default,这是为什么呢?这是因为switch的case语句是用来根据满足条件从确定的行开始执行的,如果不加入break语句跳出switch逻辑,则会一直往下执行,这也是为什么上面的测试代码会出现传入参数为2时会输出2、3和default。
为此,我们也可以看一下上面的代码编译后的class文件,通过eclipse打开后,我们可以看到如下内容:

上面编译后的语句每行前面的数字是程序的指定序号,我们可以把它简单的理解为行号,我们可以看到数字为1的那行定义了一个switch指定,其默认会跳到49行,如果传入的参数是1则跳到28行执行,如果是2则跳到35行执行,如果是3则跳到42行执行。

那么我们先来看程序的第28行到32行,其对应的就是调用System.out.println输出1,完了后没有特殊的指令,程序是会继续顺序执行的,也就是会依次执行35、38、直到57行结束。

如果我们把源程序的case语句末端都加上break语句,如下这样:

那么对应的编译的class文件通过Eclipse打开后可以看到如下内容:

我们可以看到switch语句默认会执行58行,如果传入的参数是1则会执行28行,如果是2则会从38行开始执行,接着我们可以看到28行开始是执行的System.out.println(1)的逻辑,完了后会顺序执行到35行,35行的指令是会引导程序执行到第66行,也就是跳出了switch逻辑,对应我们的测试代码就是程序结束了。

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言里switch语句为什么case后面有的加Break有的不加?
这是因为switch的case语句是用来根据满足条件从确定的行开始执行的,如果不加入break语句跳出switch逻辑,则会一直往下执行,这也是为什么上面的测试代码会出现传入参数为2时会输出2、3和default。为此,我们也可以看一下上面的代码编译后的class文件,通过eclipse打开后,我们可以看到如下内容:上面编译后的语句...

C语言里switch语句为什么case后面有的加Break有的不加?
case后面的常量表达式实际上只起语句标号作用,而不起条件判断作用,即“只是开始执行处的入口标号”。因此,一旦与switch后面圆括号中表达式的值匹配,就从此标号处开始执行;而且执行完一个case后面的语句后,若没遇到break语句,就自动进入下一个case继续执行,而不再判断是否与之匹配,直到遇到break语句才...

C语言中用switch语句的时候,为什么有些case后面没有语句的,如case10...
c语言中 switch语句其实每个case都会判断的,所以要用break跳出 有时候两个不同的case需要做相同的处理 例如case10 case 9都是优秀 那么 case10: 之后不写任何语句,也不写break 那么也会运行紧跟着的case 9:后面的语句,显示优秀 就应为用这样的极值,所以在正常的case情况运行完后,要记得加break ...

c语言中switch语句里的break加与不加有什么关系
c语言switch语句中,如果有加break则运行到时会跳出switch语句,执行switch语句之后的语句;如果没加break则会去运行switch中后续的语句,比如运行到后续别的case中。c语言中,switch(开关语句)常和case、break、default一起使用。当常量表达式所表达的量与其中一个case语句中的常量相符时,就执行此case语句...

c语言中 switch case
case 1:程序就会执行紧跟其后的语句。请注意,每个case标签后面通常需要一个break;语句,以防止程序进入其他case或default块。如果不加break,程序会继续执行下一个匹配的case,这可能会导致意外的逻辑错误。然而,有时这种特性可以被利用,比如在某些特定情况下,你可能有意地不使用break。如果表达式的值不...

c语言中switch语句里的break加与不加有什么关系
不加的话有个问题就是 比如 你有5个CASE 语句,当第二个case与switch条件相同时 执行完第二个case 然后会顺序把下面的所有case语句执行完,如果你想让程序只执行相应的case就在后面加上break,这样就只执行这一个然后跳出

c语言中的switch语句,使用时应注意哪些?
c语言中的switch语句,使用时应注意哪些? Switch语句编程规范总结: 【规则1】每个case 语句的结尾不要忘了加break,否则将导致多个分支重叠(除非有意使多个分支重叠)。 【规则2】不要忘记最后那个default 分支。即使程序真的不需要default 处理,也应该保留语句 default : break; 这样做并非多此一举,而是为了防止别人...

c语言switch语句中case后是常量表达式: 为什么有的后面没有写任何语句...
那就是什么都不执行,相当于空语句,空语句在哪都适用,望采纳

C语言中的switch语句,case后面可不可以跟一表达式,例如“100>x>50...
不可以,C语言中的switch case中的case后面仅可以跟整形常量或常量表达式。原因:如果case后面跟 100>x>50是会出现逻辑错误的。首先C语言中像100>x>50这种表达式的意义并不和数学里的一样表示x落在(50,100)这个区间。这个在C语言中100>x会先被计算得到真或假。直接用关系运算得到的真和假在C语言...

关于C语言switch语句的break问题
c语言的switch语句是穿透的= = 也就是说当程序判断某个case的条件为真后,它将在执行该case所带的的语句块之后不再对后面的case的条件进行判断而直接执行。所以将第一个break去掉并输入0之后程序判断第一个case的条件为真,输出e,再继续执行第二个case后的语句,又输出e,之后遇到break语句退出switch...

相似回答