C语言中的分支语句¶
约 786 个字 262 行代码 预计阅读时间 6 分钟
if
语句¶
基本结构¶
C | |
---|---|
1 2 3 4 |
|
基本语法¶
当表达式为真(非0,包括小于0)时,执行if中的语句,当表达式为假(0)时,不执行if
中的语句
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
上面的代码因为表达式num > num1
的值为0,故不执行if
中的printf()
语句。
在上面的代码中如果为假,不执行if
语句,代码执行完成后无任何打印,为了使逻辑更完整,引入else
语句
else
语句¶
作用:对if
语句的补充
例如:(继上面的代码进行补充)
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
在改进的代码中,增加了else
语句对if
语句进行补充,使代码整体逻辑更加完整。代码中num>num1
表达式为假不执行if
语句,开始执行else
语句中的逻辑(num <= num1
),表达式为真,执行else
中的printf()
语句。
语句包括量¶
在if
语句和else
语句中,若if()
后面无大括号,则if
或者else
只能包含紧随其后的一条语句
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
在此代码中,if()
后并无{}
括号,则此时只能if()
只能包括紧随其后的printf("The bigger number is: %d.", num);
而不能包括printf("不论是否满足num > num1,都要执行此打印语句");
if
语句的嵌套¶
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
在上面的代码中,if
语句只包含了一条语句,而else
语句中包含了新的if…else…
语句构成嵌套。上面的代码还可以简化为:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
注意,else
都是与其最近的if
相匹配,而不是根据缩进来看
Note
空格以及缩进只是为了代码格式化,但是编译器编译时都会忽略所有空格和缩进
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
在上面的代码中,else
与if(num > 0)
匹配而不是与if(num == 0)
匹配(尽管在格式上与第一个if
同一级)
switch
语句¶
基本结构¶
C | |
---|---|
1 2 3 4 5 6 |
|
基本语法¶
根据整形表达式不同的值,执行相应的case
分支,若找不到对应的值(整型常量),就执行default
语句
Note
default
语句可以省略,无匹配时就不执行任何操作
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
在上面的代码中,若输入值为0,进入switch
语句中,找到并执行0对应的case
语句,以此类推1和2,但是若输入0、1和2以外的数值,则打印“输入的是其他数”
注意:
switch
后面的表达式必须是整型表达式(包括字符类型以及计算结果为整型的运算式)case
后的值,必须是整型常量表达式(不可以是变量,但是可以是字符,例如case 'a': //语句)- 在
switch
中声明局部变量要在每个case下加一个大括号
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
switch
中的break
¶
作用:跳出每一个case
语句(default
后面可以不用break
语句)
例如:(无case
语句情况下)
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|
在上面的代码中,case
后均无break
语句
输入0不但打印了case 0
语句,而且打印了case 1
、case 2
语句和default
语句才结束运行。输入1则执行匹配开始的语句,即case 1
、case 2
语句和default
语句才结束运行,但是不会执行case 0
语句
保留一个case
语句中的break
的情况下
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
此时,输入0的情况下,会打印case 0
和case 1
语句中的内容,遇到case 1
语句的break
语句跳出switch
语句。
Note
switch
语句中的case
语句和default
语句顺序无任何要求