目录
(4) switch语句中的case和default的顺序问题
?
C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。
?
表达式是由操作符和操作数组成的,可以进行运算和求值的一种数据结构。简单来说,表达式是将值和运算符组合起来表示计算过程的方式。
?
printf是一个库函数,而add是我们自定义的一个函数,后面会讲关于自定义函数的知识。
?
复合语句是由多个语句组成的语句块。在大多数编程语言中,复合语句通常被定义在一对花括号{}中,其中的语句按顺序执行。
?
if 语句的语法形式如下:
除了 if 语句外,C语言还提供了 switch 语句来实现分支结构。
?
switch 语句是一种特殊形式的if...else 结构,用于判断条件有多个结果的情况。它把多重的else if 改成更易用、可读性更好的形式。
上面代码中,根据表达式expression不同的值,执行相应的 case 分支。如果找不到对应的值, 就执行?default 分支。
?
注:switch 后的expression必须是整型表达式,case 后的值,必须是整形常量表达式。
?
练习:输入任意一个整数值,计算除3之后的余数,如果使用if语句完成,如下:
如果使用switch语句改写,就可以是这样的:
上述的代码中,我们要注意的点有:
1. case 和后边的数字之间必须有空格
2. 每一个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个switch语句。
?
前面的代码中,如果我们去掉case语句中的break,会出现什么情况呢?
用数字6测试,看一下结果: 我们发现,6除以3本来余数是0,但是程序运行的结果多了两行,分别是"余数是1"以及"余数是2"的打印。
?
这是为什么呢?原因是 switch 语句也是有分支效果的,只有在 switch 语句中使用?break 才能在跳出 switch 语句,如果某一个 case 语句的后边没有 break 语句,代码会继续往下执行,有可能执行其他 case语句中的代码,直到遇到 break 语句或者 switch 语句结束。
?
就比如上面的代码就执行了 case 1 与 case 2 中的语句。 所以在 switch 语句中 break 语句是非常重要的,能实现真正的分支效果。 当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了。
?
在使用?switch 语句的时候,我们经常可能遇到一种情况,比如 switch 后的表达式中的值无法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入default 子句。
switch 后边的 expression 的结果不是 value1 ,也不是 value2 的时候,就会执行default 子句。
在 switch 语句中 case 子句和 default 子句有要求顺序吗? default 只能放在最后吗?
?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。 不过我们通常是把 default 子句放在最后处理的。
关于if语句与switch语句就介绍到这里,如果文章有什么错误,希望各位可以在评论区斧正。
?
?
?
?