本文用以介绍分支结构,主要的实现方式为if
语句和switch
语句。
一、if语句
1.1 if语句
if (表达式)
语句
表达式为真则执行语句,为假就不执行。在C语言中,0表示假,非0表示真.下图表示if的执行过程:
1.2 else语句
当判断一个条件不成立时,可以在去走else
语句。
if(表达式)
语句
else
语句
默认在if
和else
语句中都是只包含1条语句。如果要同时控制多条语句,那就要使用{ }
1.3 嵌套语句
在 if else
语句中, else
可以与另⼀个 if
语句连⽤,构成多重判断.
1.4 悬空else问题
如果有多个 if
和 else
,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。
二、关系操作符
C语言中用于比较的表达式称作“关系表达式”,里面的运算符就称作“关系运算符”,主要有如下6个:>
<
<=
>=
==
!=
。关系表达式的结果通常为0或1,表示真假。
注意:相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,不要混淆。
三、条件操作符
条件操作符也叫三目操作符,需要接受三个操作数的,形式如下:
exp1 ? exp2 : exp3
条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果
exp1 为假, exp3 计算,计算的结果是整个表达式的结果。
四、逻辑操作符 && ,|| ,!
逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符:
4.1 !:逻辑取反运算符(改变单个表达式的真假)
4.2 &&:与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)
4.3||:或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)
4.4 短路
C语言逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。
五、switch 语句
5.1 switch 语句
除了 if 语句外,C语言还提供了 switch 语句来实现分支结构。
switch 语句是⼀种特殊形式的if...else
结构,用于判断条件有多个结果的情况。它把多重的 else if
改成更易用、可读性更好的形式。
switch (expression)
{
case value1:
statement
case value2:
statement
default:
statement
//1. case 和后边的数字之间必须有空格
//2. 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。
}
上面代码中,根据表达式 expression 不同的值,执行相应的 case 分支。如果找不到对应的值,就执行 default 分支。
注:
• switch 后的 expression 必须是整型表达式
• case 后的值,必须是整形常量表达式
switch 语句也是分支效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执行,有可能执行其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。
5.2 default 语句
在使用 switch 语句的时候,我们经常可能遇到⼀种情况,比如 switch 后的表达式中的值无法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入default 子句。
在 switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。不过我们通常是把 default ⼦句放在最后处理的。