程序不只是按顺序执行语句。很多时候,它需要先判断某个条件(condition)的结果是否为 true,再决定下一步要做什么。条件判断的结果通常是布尔值(Boolean value):true 或 false。
关系运算符
关系运算符(relational operator)用于比较两个值。比较结果不是数字本身,而是一个布尔值。
C++ 中常见的关系运算符包括:
<:小于>:大于<=:小于等于>=:大于等于==:等于!=:不等于
一个等号 = 是赋值(assignment),两个等号 == 才是比较(comparison)。
int age = 17;
cout << (age < 18) << endl; // true
cout << (age == 18) << endl; // false
cout << (age != 18) << endl; // trueage = 17 的意思是把 17 赋值给变量 age。age == 18 的意思是比较 age 当前的值是否等于 18。
知识测验
题目
在 C++ 中,哪个运算符用于判断两个值是否相等?
逻辑运算符
逻辑运算符(logical operator)用于连接多个条件。它们的结果仍然是布尔值。
&&:多个条件都为true时,整体才是true。||:多个条件中至少有一个为true时,整体就是true。!:把true变成false,把false变成true。
逻辑运算符真值表
真值表(truth table)会把所有可能的输入组合列出来,帮助你看清逻辑运算符的规则。
&& 要求左右两边都为 true,结果才是 true。
| A | B | A && B |
|---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
|| 只要求左右两边至少有一边为 true,结果就是 true。
| A | B | A || B |
|---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
! 只作用在一个布尔值上,会把结果反过来。
| A | ! A |
|---|---|
true | false |
false | true |
知识测验
题目
!false 的结果是什么?
int age = 20;
bool hasTicket = true;
cout << (age >= 18 && hasTicket) << endl;
cout << (age < 18 || hasTicket) << endl;
cout << !hasTicket << endl;如果你把条件读成自然语言,会更容易理解:age >= 18 && hasTicket 可以读成“年龄至少 18 岁,并且有票”。
互动实验
体育馆智能检票口
访问权限免费
选择一位观众,再扫描证件和门票。只有“年龄达标”和“门票有效”同时为 true,闸机才会打开。
2 号入场通道
林安
SCAN
请扫描证件和门票
1
&&年龄验证20 >= 18 → ?
2
=门票验证hasTicket → ?
?
闸机结果等待验证
知识测验
题目
表达式 true && false 的结果是什么?
组合条件
C++ 不支持数学写法 0 < age < 18;应拆成两个比较并用 && 连接:
int age = 16;
bool minor = age > 0 && age < 18;
cout << minor << endl;这行代码等价于:
int score = 85;
int attendance = 92;
bool qualified = score >= 80 && attendance >= 90;
cout << qualified << endl;当条件变复杂时,建议使用括号让逻辑更清晰。
int score = 85;
int attendance = 92;
bool passed = score >= 60 && attendance >= 80;
bool excellent = score >= 90 || attendance >= 95;
cout << passed << endl; // true
cout << excellent << endl; // false不要急着把所有条件写成一行。先把每个小条件命名清楚,程序会更容易读,也更容易排错。
知识测验
题目
age = 16 时,age > 0 && age < 18 的结果是什么?