在程序逻辑中,经常会遇到一些不同的条件并根据条件进行不同的操作,这里便是判断语句的业务范围。
C
中判断语句分为两类: if
语句和 switch
语句。
if语句
if
语句是最基本的判断语句,基本格式如下:
1 | if (condition){ |
condition
为条件表达式,决定语句的执行逻辑。 condition
为真则执行 if
后的语句或代码块。 if
语句可以独立存在,也可以在后面附加 else if
进行连续判断,或者在最后加上 else
作为条件未命中的操作。一个 if
语句可以包含任意数量的 else if
以及至多一个 else
且必须出现在最后。
C
没有布尔类型表示逻辑真假。C
会将所有非0或非NULL
的值视为真,0或NULL
视为假。
if
、else if
、else
后的语句可以是单一语句,也可以是代码块。只有条件语句括号后的第一个代码块或第一条语句会被判断语句识别。当然,直接在条件语句括号后加分号(即不跟随任何语句)也是可行的。
1 | int condition = 0; |
switch语句
switch
语句用于对条件的多种情况分别进行匹配,基本语法如下:
1 | switch(condition){ |
condition
为条件, switch
会从上到下一次把 condition
和 case
后的常量表达式比较,如果相同则命中,执行对应 case
下的语句,如果所有 case
均未命中则执行 default
中的语句(如果存在)。在 case
的语句中可以用 break
来终止语句的执行。
常量表达式
case
的条件必须是常量表达式,即字面常量或仅由字面常量组成的表达式(静态变量与const常量均不行),如10086
、1+1
、114*514
、2/1
。
case
的击穿
在switch
语句中,如果一个case
下的语句未包含break
,那么在运行完这个case
后程序会继续执行后续所有case
下的语句并无视case
的条件,直到运行完所有case
(default的语句也不能幸免)或者遇到break
。
1 |
|
? :运算符
这也是一种“判断语句”。基本格式如下:
1 | //condition ? expr1 : expr2 |
在 condition
为真时,会执行 expr1
并将其值作为整个表达式的值, expr2
被忽略; condition
为假时,会执行 expr2
并将其值作为整个表达式的值, expr1
被忽略。
写在最后
判断语句能极大增加程序的灵活性以应对不同的情况。