现实生活中我们常说”并且””或者””相反”这类词语,对应到 C 语言中就是逻辑运算符。当单个条件不足以描述需求时,就需要将多个条件组合起来进行判断。
1. 为什么需要逻辑运算符
以教程中的例子说明:
| 生活场景 | 逻辑含义 | 代码映射 |
|---|---|---|
| 感觉良好 且 当天是工作日 → 去上班 | 两个条件同时满足 | feeling_good && is_weekday |
| 生病了 或者 当天是周末 → 待在家 | 两个条件至少满足一个 | is_sick \|\| is_weekend |
| 不感觉良好 → 躺床上 | 条件取反 | !feeling_good |
2. 逻辑与运算符 &&
&& 是二元运算符,用于合并两个逻辑表达式:
test1 && test2
真值规则:只有 test1 和 test2 同时为 true,整个式子结果才为 true;任一为 false,结果即为 false。
| test1 | test2 | test1 && test2 |
|---|---|---|
| true | true | true |
| true | false | false |
| false | true | false |
| false | false | false |
代码示例:
if(age > 12 && age < 20)
printf("你是青少年");Code language: JavaScript (javascript)
含义:年龄大于 12 且 小于 20,即 13~19 岁之间才执行。
也可以拆分为中间变量:
bool test1 = age > 12;
bool test2 = age < 20;
if(test1 && test2)
printf("你是青少年");Code language: JavaScript (javascript)
多个条件串联:
if(age > 12 && age < 20 && savings > 5000)
printf("你是富裕的青少年");Code language: HTML, XML (xml)
三个条件全部满足才输出。
3. 短路求值(Short-Circuit Evaluation)
&& 具有短路特性:如果 test1 为 false,编译器不会再求值 test2,直接判定整个式子为 false。
if(count > 0 && total / count > 10) // 安全:count 为 0 时不会执行除法
printf("平均大于10\n");Code language: JavaScript (javascript)
若没有短路,count == 0 时 total / count 会导致除零错误。
Previous: 测试字符与大小写转换
Next: 逻辑或运算符 ||