一.前言
大家好,上文我们已经讲过了用if语句实现分支结构,本文我们讲一下用switch语句实现分支结构,已经if语句和switch在使用上的差别。
二.正文
1.1 switch语句
switch语句是一种特殊形式的if...else结构,用于判断条件有多个结果的情况。它把多重的else if语句改成可读性更好的形式。
switch的语句大致如下:
值得注意的是1.case后面是冒号:而不是分号;2.case后面要加一个空格。
下面我们通过一个简单的例子,让大家对switch的用法有个简单的认识。
例子:请输入一个1—7之间的数值,打印对应数字所代表的是星期几:
本代码中的break是为了跳出switch语句,在后面的循环中我们还会见到。
1.2 switch语句中的break
在上面的代码中我们提到,switch中的break是为了跳出switch语句,那么如果没有break代码的结果会有什么变化呢?让我们将代码运行一下,看一下结果:
通过以上俩个代码我们已经看出,第一张代码图有break语句的情况下,计算机在打印完“星期六”后不再执行下面的语句,而是直接将跳出switch语句。而第二张代码图中在注释掉break语句后,代码在打印完“星期六”的结果后,代码继续向下执行,打印“星期日”。因此在使用switch语句中的时候,break语句的使用尤为重要,但并非在switch语句中每条case都要使用break,下面就有一个例子:
例子:输入1-5是工作日,输入6-7是休息日。
由图可知,当我们输入1是工作日,输入6是休息日,上面的1,2,3,4和6 case 后跟的就没有break语句。
1.3switch语句中的default
在使用switch语句的时候,我们经常可能遇到一种情况,比如switch后的整形表达式中的值无法匹配代码中的case语句的时候,这时候要不就不做处理,要不就得在switch语句中加入default语句。
就比如在我们上面的代码中我们通过scanf函数输入数值的时候,如果我们输入的不是1~7的数字,而是8该怎么办呢?毕竟我们的日期中可没有星期八这一天,这样我们就可以通过default语句说明情况,请见下面例子:
通过代码运行结果我们可知,当我们输入的数字与case后的整形常量表达式没有一个能匹配成功后,代码将会进入default语句,并给我们说明情况。
1.4关于switch语句中的case和default的顺序问题
在switch中case与default的安置顺序有要求吗?
通常来说两者的顺序并没有要求,比如default可以放在case的前面或是后面,但是我们通常把default放在最后面,毕竟特殊情况放在最后面也合乎常理一些。
但是值得注意的是,虽然default并没有顺序的要求,但是这并不意味着我们可以随便放,就比如default不能放在两个case中间这样会导致代码出错
就比如途中default放在case 6与case 7之间的时候代码的运行结果出错。
1.5if语句和switch语句的差别
1.两者的使用范围有差别:if语句的使用的使用范围更广,而switch的适用范围更窄一些,原因是因为if()括号中的运算符可以是大于、小于或者等于,而switch()括号中一般表达式都呈现的是等于某一个值即只能运用于等于符号。
就比如以下代码中我们输入一个整数判断它是正数、负数或是整数0的时候用if...else语句很容易就可以写出来,而单纯使用switch就很难编写出来,除非在运用switch语句的同时借用if语句才能编写出我们想要的代码,就如第二幅图片所展现的一样。
2可读性方面:在同样的使用环境下,使用switch的优先级高于使用if语句,因为在一些复杂化的代码中使用if..else不可避免地有些·冗长,没有switch显得简洁可读性高。
最后的最后,谢谢大家的观看。