除了if语句外,C语言还提供了switch语句来实现分支结构。
switch语句是一种特殊的if...else...结构,用于判断条件有多个结果的情况。它能把多重if...else...改成更易用、可读性更好地形式。如下为switch语句的语法形式:
其中expression以及case后的value均为整型表达式。特殊的,case后的value必须为整型常量表达式!statement的意思是语句,如果输入的值无法找到相应的case值进行匹配,则执行default后的语句!
1.if语句与switch语句的对比以及switch语句中break的作用
由上图便能直观地感受到switch与if语句的区别!但需要注意的是:
1.case后的数字与case间有空格
2.每一个case语句执行完成后加上break才能够跳出switch语句,否则会出现如下情况
即表达式的值为0时能够从case 0:这一入口进入,如果没有break这一出口跳出switch语句,那么代码仍会继续向下运行!switch语句只有通过break才能实现真正的分支效果!
如上问题其实也可以不通过分支结构完成如下图
这也启发我们要灵活运用代码,不要死板单一!
2.对break的理解与灵活运用
我们可以由上例更深入地理解break并基本掌握如何运用break!
对上例由代码的灵活性我们依旧可以使用if语句中的与逻辑操作符来解决如下图所示
3.switch语句中的default
依旧是上例,当输入的值无法与case值匹配时则执行default后的语句。
4.对于default与case的顺序关系
对于default与case的顺序关系,语法并没有规定default一定要放在最后如下图
即使将default放最上面也并不影响,但是此时注意加上break防止代码继续运行。
但由于逻辑性以及方便性,我们一般都将default放在最后!
5.关于switch语句中的expression以及case后的整型常量表达式的一些细节
1.expression中必须是整型变量表达式
如图输入浮点型时则会报错必须是整型
2.对于字符也是整型的理解
字符在计算机中以ASCII码的形式存在,而ASCII码也属于整型,所以在switch语句中使用字符并不会报错
3.case后必须是整型常量表达式,不能是变量!
当使用变量m时会出现如下报错
这也就验证了case后必须是整型常量表达式而不能是变量的说法!