C 判断语句
本章介绍 if/else、switch/case 等条件分支结构及最佳实践。
1. if / else
c
if (cond) {
// ...
} else if (cond2) {
// ...
} else {
// ...
}- 条件必须为标量(0 为假,非 0 为真)
- 使用圆括号与大括号提高可读性与安全性
2. 三目运算符
cond ? a : b,适合简单表达式,不宜复杂嵌套。
3. switch / case
c
switch (x) {
case 1:
// ...
break;
case 2:
// ...
break;
default:
// ...
}case值必须是整型常量表达式- 小心
break,避免“贯穿”造成逻辑错误(C17 起可用[[fallthrough]]注释意图)
4. 常见模式
- 守卫式返回:对非法输入尽早 return
- 使用
enum和switch组织有限状态机
5. 示例
c
#include <stdio.h>
enum Command { CMD_ADD=1, CMD_SUB=2, CMD_MUL=3 };
int calc(int a, int b, enum Command cmd) {
switch (cmd) {
case CMD_ADD: return a + b;
case CMD_SUB: return a - b;
case CMD_MUL: return a * b;
default: return 0;
}
}
int main(void) {
printf("%d\n", calc(3, 4, CMD_MUL));
return 0;
}6. 小结
条件分支是程序控制的基础,保持分支简洁、避免深层嵌套,必要时拆函数。