C语言——分支相关知识(下)

本文介绍了switch语句的基本用法,包括case和break的作用,以及default语句的使用场景。同时,对比了switch与if语句的适用范围和可读性,指出switch在特定场景下的优势。
摘要由CSDN通过智能技术生成

一.前言

      大家好,上文我们已经讲过了用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显得简洁可读性高。

      最后的最后,谢谢大家的观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值