⚙️ 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:使用 =