⚙️ C++
C++ 中的比较运算符和逻辑运算符
这是什么?为什么需要它?
想象一下你在玩电脑游戏。你有100条命。当你遇到怪物时,游戏会检查:"生命值大于0吗?"。如果是——你可以战斗。如果不是——游戏显示"Game Over"。
在编程中,这种检查由比较运算符和逻辑运算符完成。它们帮助程序做出决策。例如:
- 检查账户余额是否足够
- 判断是否到了晚上
- 判断玩家能否开门(是否有钥匙或者知道密码)
没有它们,程序就像一个机器人,只会重复做同样的事情,而不关注周围发生了什么。有了它们,程序就变得智能了!
语法和代码示例
在C++中,比较运算符如下所示:
== // 等于(注意:两个等号!)
!= // 不等于
> // 大于
< // 小于
>= // 大于或等于
<= // 小于或等于
而逻辑运算符用于连接多个条件:
&& // 与(两个条件都必须为 true)
|| // 或(至少一个条件为 true)
! // 非(将 true 变为 false,反之亦然)
示例1:年龄检查
#include <iostream>
using namespace std;
int main() {
int age = 14;
// 检查:年龄大于或等于18?
if (age >= 18) {
cout << "你是成年人!" << endl;
} else {
cout << "你还是个孩子。" << endl;
}
// 输出:"你还是个孩子。"
// 因为14不大于或等于18
return 0;
}
示例2:逻辑与 (&&)
#include <iostream>
using namespace std;
int main() {
bool has_key = true;
bool knows_code = false;
// 要开门,需要同时有钥匙和密码
if (has_key && knows_code) {
cout << "门开了!" << endl;
} else {
cout << "访问被拒绝。" << endl;
}
// 输出:"访问被拒绝。"
// 因为 knows_code = false
return 0;
}
示例3:逻辑或 (||)
#include <iostream>
using namespace std;
int main() {
int temperature = 30; // 摄氏度
// 如果暖和或者干燥,就去散步
if (temperature > 20 || temperature < 10) {
cout << "去散步!" << endl;
} else {
cout << "待在家里。" << endl;
}
// 输出:"去散步!"
// 因为30 > 20(第一个条件为 true)
return 0;
}
示例4:逻辑非 (!)
#include <iostream>
using namespace std;
int main() {
bool is_raining = false;
// 如果没有下雨,就去散步
if (!is_raining) {
cout << "耶,去散步!" << endl;
} else {
cout << "带上伞。" << endl;
}
// 输出:"耶,去散步!"
// 因为 !false = true
return 0;
}
示例5:复杂条件
#include <iostream>
using namespace std;
int main() {
int age = 16;
bool has_license = false;
bool with_parents = true;
// 可以开车,如果:
// (年龄 >= 18 并且有驾照) 或者 (和父母在一起)
if ((age >= 18 && has_license) || with_parents) {
cout << "可以开车!" << endl;
} else {
cout << "不能开车。" << endl;
}
// 输出:"可以开车!"
// 因为 with_parents = true
return 0;
}
与Python的比较
在Python中,相同的运算符看起来几乎一样,但有一些重要的区别:
| 操作 | C++ | Python |
|---|---|---|
| 等于 | == |
== |
| 不等于 | != |
!= |
| 大于 | > |
> |
| 与 | && |
and |
| 或 | || |
or |
| 非 | ! |
not |
Python示例:
age = 14
if age >= 18:
print("你是成年人!")
else:
print("你还是个孩子。")
# 输出:"你还是个孩子。"
主要区别:在Python中,逻辑运算符用单词表示(and, or, not),而在C++中用符号表示(&&, ||, !)。另外,Python不需要分号和花括号——而是使用缩进。
新手常见错误
错误1:混淆 = 和 ==
一个等号 (=) 是赋值。两个 (==) 是比较。
// 错误:
if (x = 5) { ... } // 错误!将5赋值给变量x
// 正确:
if (x == 5) { ... } // 检查x是否等于5
错误2:忘记运算符优先级
就像数学中:先乘除,后加减。逻辑运算也有顺序:先 !,然后 &&,最后 ||。
// 可能不清晰:
if (a || b && c) // 先执行 b && c,然后 a || 结果
// 最好使用括号:
if (a || (b && c)) // 现在清晰了
错误3:比较不同类型
int x = 5;
double y = 5.0;
if (x == y) { ... } // 可以工作,但可能出乎意料
// 最好转换为同一类型:
if (x == (int)y) { ... }
错误4:使用 =