一、C++ 常用逻辑运算符
| 运算符 | 名称 | 说明 | 示例 |
|---|---|---|---|
&& |
逻辑与 | 两边都为真,结果才为真 | a > 0 && b > 0 |
| ` | ` | 逻辑或 | |
! |
逻辑非 | 取反 | !(a > b) |
二、真值表
| A | B | A && B |
`A | B` | !A |
|
|---|---|---|---|---|---|---|
| true | true | true | true | false | ||
| true | false | false | true | false | ||
| false | true | false | true | true | ||
| false | false | false | false | true |
三、使用示例
#include <iostream>
using namespace std;
int main() {
int a = 5, b = 10;
if (a > 0 && b > 0) {
cout << "a 和 b 都大于 0" << endl;
}
if (a > 0 || b < 0) {
cout << "a > 0 或 b < 0 成立" << endl;
}
if (!(a == b)) {
cout << "a 不等于 b" << endl;
}
return 0;
}
四、短路求值(Short-Circuit Evaluation)
C++ 中逻辑运算符有 短路特性:
1️⃣ &&(逻辑与)
- 如果左边为
false,右边 不会执行
if (a != 0 && 10 / a > 2) {
// 安全,避免除零错误
}
2️⃣ ||(逻辑或)
- 如果左边为
true,右边 不会执行
if (a == 0 || b / a > 1) {
// 同样避免除零
}
五、逻辑运算符 vs 位运算符(易混淆)
| 逻辑运算符 | 位运算符 | 区别 |
|---|---|---|
&& |
& |
逻辑 vs 按位 |
| ` | ` |
❌ 错误示例:
if (a & b) // 这是位运算,不是逻辑判断
✅ 正确写法:
if (a && b)
六、优先级(简化版)
从高到低:
! → 算术运算符 → 关系运算符 → &&
→ || → 赋值运算符
建议:不确定时加括号
if ((a > 0) && (b < 10))