一.if 语句
1.1 if语句单分支
if语句语法形式如下:
当表达式为真时,执行下面的语句;当表达式为假时,就不执行语句。而在C语言中,表达式的结果为0时,该表达式为假。当表达式的结果为非0时,该表达式为真。下面以一段简单的代码为例:输入一个整数,如果是偶数,则输出“偶数”。
#include<stdio.h> int main() { int num = 0; scanf("%d",&num); if(num % 2 == 0) { printf("偶数\n"); } return 0; }
输入2时,此时num%2==0该表达式为真,所以就输出了偶数。
输入5时,此时num%2==0该表达式为假,所以if后的语句块就不会执行,因此就无任何输出。
这段代码只有一个分支,理解起来自然就会简单一点。
1.2 if - else 双分支
在上一段代码中,if语句中的表达式为假时,什么都没有执行。if-else双分支与其不同的就在于当if语句中的表达式为假时,就会执行else中的语句,我们仍然以一段代码为例。
此时输入5后,就不再像if单分支时什么都不输出,而是执行了else语句后的代码。简言之,就是if语句和else语句后的代码总要执行一个,且只能执行一个!!
1.3 if - else if - else 多分支
相比于上面的双分支,此时因为else if 可以有任意数量,所以就形成了更加丰富的分支。下面仍然以一段代码为例。
此时输入5种不同的年龄段,就会有对应5种不同的输出。
1.4 if 与else 的配对规则
总的来说,讨论if 与else的配对规则时可分为有无大括号两种情况。下面就一一为大家解释。
1.4.1 无大括号时
代码示例:
此时,输入4时,无任何输出;输入9时,第一个if 语句中的表达式为真,进入第二个if语句中,第二个依然成立,输出666666。输入13时,第一个if语句判断成立,进入第二个if 语句,此时不成立,执行else中的语句,输出999999。
总结来说,当无大括号时,else与距离最近的if配对。
1.4.2 有大括号时
代码示例:
此时,输入 4时,第一个if 不成立,执行else语句,输出999999。输入9时,第一个if 和第二个if均成立,故输出666666。输入13时,第一个if语句成立,但第二个if语句不成立,且因第二个if无else与其配对,故此时无任何输出。
总结,有大括号时,else与其邻近的大括号外最近的if配对。
二.switch语句
代码示例:
switch语句中,switch后必须时整型表达式。case后必须是整型常量表达式,且case和后面的数字之间必须有空格。
我们不妨先来看一下缺少break时的输出结果
此时输入4时,执行结果为:
而我们实际想要的结果应该是只输出星期四的,但因为缺少了break,代码会继续往后执行,从而不能到我们想要的结果。只有使用break代码才能及时跳出去。但需注意的是,并非每个case后面都需要break,这要根据实际情况来选择。
2.2 switch语句中的default
此时输入8时,结果如下:
![]()
2.3 switch语句中的case和default的顺序问题
三.小结
以上是小编本人对C语言中分支语句的理解,其中当然有许多错误和不足之处,希望各位大佬能在评论区指正,小编不胜感激。