C语言switch中break语句的作用

electricperi 2012-10-22

问题:

break在for循环、while循环等循环流程控制中起的作用是停止执行break后面的语句,跳出本次循环,并跳出该循环控制体;

在switch条件选择中,没有了循环控制,break又起什么作用呢?

解决办法:

1. switch语句的执行流程是:

首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,

若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇到break语句就退出switch语句,程序流程转向开关语句的下一个语句;

若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句,然后退出switch语句,程序流程转向开关语句的下一个语句。

在switch-case语句中,多个case可以共用一条执行语句,如:

case 常量表达式1:

case 常量表达式2:

case 常量表达式3:

语句;

break;

由此可以看出case语句的作用:

case后面的常量表达式实际上只起语句标号作用,而不起条件判断作用,即“只是开始执行处的入口标号”。

因此,一旦与switch后面圆括号中表达式的值匹配,就从此标号处开始执行;

而且执行完一个case后面的语句后,若没遇到break语句,就自动进入下一个case继续执行,而不再判断是否与之匹配,直到遇到break语句才停止执行,退出switch语句。

因此,若想执行一个case分之后立即跳出switch语句,就必须在此分支的最后添加一个break语句。

2. 从上面的描述可以看出,switch条件选择语句中的break的作用跟循环控制语句中的作用基本相同:

都是不执行break之后的语句,并结束退出switch语句;

3. 与循环控制中存在continue语句不同的是,switch条件选择语句中没有continue语句;

问题解决。

相关推荐