Skip to content

6. 关系与逻辑运算符:真假对决

前置学习:运算符与表达式

程序之所以能拥有“智能”,是因为它能对外界的情况进行判断。 在 C++ 中,所有的判断结果只有两种:成立 (true)不成立 (false)。在计算机底层,true 的值就是 1false 的值就是 0

1. 关系运算符:比大小

用于比较两个数据的符号,叫关系运算符。

运算符含义示例结果
>大于5 > 31 (true)
<小于5 < 30 (false)
>=大于或等于5 >= 51 (true)
<=小于或等于5 <= 40 (false)
==等于5 == 51 (true)
!=不等于5 != 31 (true)

💀 致命陷阱:=== 的终极混淆 这是 99% 的初学者都会犯的错,一旦写错,程序不会报错,但逻辑会全盘崩溃!

  • =(单个等号)叫赋值:意思是把右边的东西,硬塞进左边的变量盒子里。
  • ==(双等号)叫判断相等:意思是提出疑问,“左边和右边相等吗?”

2. 逻辑运算符:组合条件

有时候一个判断条件不够用,比如“必须是周末”并且“作业做完了”,才能打游戏。这时候就需要逻辑运算符。

运算符名字规则记忆口诀
&&逻辑与 (AND)左右两边都为真,结果才为真。“一假必假”(必须全满足)
||逻辑或 (OR)左右两边只要有一个为真,结果就为真。“一真必真”(满足一个就行)
!逻辑非 (NOT)颠倒黑白。真的变成假的,假的变成真的。“唱反调”

注:|| 这个符号在键盘上的位置是:按住 Shift + \(回车键上面的那个键)。

3. 极易错:数学连写的灾难

在数学课上,我们经常这样表示一个数在 10 到 20 之间:$10 < x < 20$。 如果你把这个式子原封不动地写进 C++ 代码里,编译器不会报错,但会算出极其诡异的结果!

错误原因剖析: 电脑执行 10 < x < 20 时,是从左到右算的。 假设 x 是 100。首先算 10 < 100,结果是真(1)。然后拿算出来的 1 继续和后面比:1 < 20,结果为真。 于是,电脑最终判定 $10 < 100 < 20$ 是成立的!这完全违背了我们的本意。

竞赛标准写法:必须拆开,用 && 连接!

cpp
// 翻译成机器语言:x 大于 10,并且 x 小于 20
x > 10 && x < 20

4. 动手实践

md
1. 打开左下角的代码沙盒。
2. 试着预测以下代码的输出结果,然后运行验证你的猜想:
cpp
#include <bits/stdc++.h>
using namespace std;

int main() {
    int score = 85;
    bool isExcellent = (score >= 90);
    bool isPass = (score >= 60 && score <= 100);
    
    cout << isExcellent << endl;
    cout << isPass << endl;
    
    return 0;
}
💻 运行代码

C++ 在线评测沙盒

📥 标准输入 (cin):
📤 终端输出 (cout):