⚜️
🪞

逻辑运算符 NOT (!)

Logical Operator NOT

🙃 反向思考
🕵️‍♂️ 逻辑推理

本节课关卡

扣哒世界 · 计算机科学3 · C++ · 第42–46关

C++ · 本节课关卡

42 · 平常的一天

先读关卡目标,观察地图,再运用本课知识。

43 · 逻辑之路

先读关卡目标,观察地图,再运用本课知识。

44 · 逻辑之圈

先读关卡目标,观察地图,再运用本课知识。

45 · 逻辑结论

先读关卡目标,观察地图,再运用本课知识。

46 · 组合挑战. 非与或

先读关卡目标,观察地图,再运用本课知识。

学习路线:读目标 → 看图解 → 写代码 → 运行检查

🎭

反向大师:NOT (!)

01/08

在 C++ 中,NOT 写作 !。

它就像一面魔法镜子,会把 true 变成 false,把 false 变成 true。

// 例子:如果没有下雨 bool is_raining = true; bool can_go_out = !is_raining; // 结果:false (不能出去)
"非真即假,非假即真。"
👍
TRUE
👎
FALSE
!
点击卡片反转
📅

实战:短路逻辑

02/08

利用 && 的短路特性来安全检查属性。

如果左边是 false(比如没有敌人),右边就不会执行(不会报错)。

while (true) { auto enemy = hero.findNearestEnemy(); // 先检查存在,再检查类型 if (enemy && enemy.type == "munchkin") { hero.attack(enemy); } auto item = hero.findNearestItem(); if (item && item.type == "coin") { hero.moveXY(item.pos.x, item.pos.y); } }
⚡

Short-Circuit Evaluation

🛤️

实战:逻辑之路

03/08

根据布尔运算结果选择路径。

// 1. AND (&&): 两个都为真 if (secretA && secretB) hero.moveXY(20, 33); else hero.moveXY(20, 15); // 2. OR (||): 至少一个为真 if (secretA || secretB) hero.moveXY(32, 33); else hero.moveXY(32, 15); // 3. NOT (!): 取反 if (!secretB) hero.moveXY(44, 33); else hero.moveXY(44, 15);
🛤️

Choose Your Path

⭕

实战:逻辑之圈

04/08

多个变量的连续运算。

// 多个 AND: 全部为真才行 auto D = A && B && C; if (D) hero.moveXY(30, 33); else hero.moveXY(30, 15); // 多个 OR: 只要有一个为真就行 auto E = A || B || C; if (E) hero.moveXY(20, 24); else hero.moveXY(40, 24);
🔗

Chained Logic

🪜

谁先谁后?(优先级)

05/08

逻辑运算符的计算顺序:

1. ( ) 括号 - 最高
2. ! (NOT) - 取反
3. && (AND) - 并且
4. || (OR) - 或者
"C++ 先算 !,再算 &&,最后算 ||。
拿不准时,请用括号!"
🥇
🕵️‍♀️

实战:逻辑结论

06/08

利用优先级和括号解开复杂谜题。

A:
B:
C:
(A && B) || C
RESULT: True
// Tamas: (A && B) || C auto tam = (A && B) || C; hero.say(tam); // Zsofi: (A || B) && C auto zso = (A || B) && C; hero.say(zso);
🎓

逻辑大师口诀

07/08
"! (NOT) 是反向器,
黑白颠倒全靠它。"
"括号保平安,
优先级高最优先!"
🏆

我的知识宝藏 · 一页复习

扣哒世界 · 计算机科学3 · C++ · 第42–46关

C++ · 知识点图
关键字方法 / 函数字符串数字

反向大师:NOT (!)

在 C++ 中,NOT 写作 !。

实战:短路逻辑

利用 && 的短路特性来安全检查属性。

auto enemy = hero.findNearestEnemy();

实战:逻辑之路

根据布尔运算结果选择路径。

if (secretA && secretB) hero.moveXY(20, 33);

实战:逻辑之圈

多个变量的连续运算。

if (D) hero.moveXY(30, 33);

谁先谁后?(优先级)

逻辑运算符的计算顺序:

实战:逻辑结论

利用优先级和括号解开复杂谜题。

hero.say(tam);

本节课关卡:42. 平常的一天;43. 逻辑之路;44. 逻辑之圈;45. 逻辑结论;46. 组合挑战. 非与或