
一起动脑筋 · 先看一个小故事
女孩想进阅读室:带了借阅卡,并且现在开放。只满足一个条件够吗?
把过程摊开来看
- 有卡true
- 开放false
- 两个都要true && false
- 结果false
&& 要求两边都成立,|| 只要求至少一边成立,! 把真假反过来。
可以用两张“是/否”卡片摆出四种组合,观察门什么时候打开。
01为什么要组合条件?
有时一个条件不够。
例如“年龄至少 10 岁,而且已经报名”才能参加活动:
age >= 10 && registered02&&:两个条件都要满足
&& 表示逻辑“与”。只有两边都为 true,结果才是 true。
| A | B | A && B |
|---|---|---|
| true | true | true |
| true | false | false |
| false | true | false |
| false | false | false |
03||:至少一个条件满足
|| 表示逻辑“或”。只要至少一边为 true,结果就是 true。
isWeekend || isHoliday04!:把真假反过来
! 表示逻辑“非”。
!true // false
!false // true
例如:
if (!gameOver) {
// 游戏还没结束
}05括号为什么很重要?
逻辑表达式也有运算符优先级。! 的优先级高于 &&,&& 又高于 ||。
但复杂条件最好主动使用括号:
(age >= 10 && registered) || hasSpecialPass06什么是短路求值?
C++ 的 && 和 || 会短路求值。
如果 A && B 中 A 已经是 false,就不会再求值 B;如果 A || B 中 A 已经是 true,也不会再求值 B。
p != nullptr && p->value > 0
只有当 p != nullptr 为 true 时,右边才会继续执行。
你已经知道了什么
&&表示逻辑与,两边都真才真。||表示逻辑或,至少一边真就真。!表示逻辑非,把真假反过来。- 复杂逻辑表达式应合理使用括号。
&&和||具有短路求值特性。
下一篇:数据类型为什么重要?
轮到你来试一试
有卡或有临时证都可进,两样都有会不通过吗?
想好了吗?点开看解释
不会。逻辑或在至少一个条件为真时成立,两边都真也成立。