Skip to content
难度基础(★)
建议时长45分钟
本课难点
  • 运算符优先级(关系运算 vs 逻辑运算 vs 赋值)与括号嵌套
  • 短路求值会影响“右侧赋值/自增”等副作用是否发生
  • 逻辑运算(&&/||)与位运算(&/|/^)的区分与掩码套路

1.1.5 逻辑运算

本课核心知识点手绘速记(SVG)

📝 学习目标

  • 能读懂并计算常见逻辑表达式的真假
  • 掌握关系运算符、逻辑运算符的优先级
  • 理解短路求值(short-circuit)的规则与陷阱
  • 掌握“位运算 + 掩码(mask)”判断某些位是否为 0/1 的做题套路

🎯 知识点

1) 关系运算符(Relational Operators)

常见:

  • 大小比较:> < >= <=
  • 相等/不等:== !=

课堂提醒:

  • 在很多编程语言中:
    • == 表示“相等比较”
    • = 表示“赋值”

2) 逻辑运算(Logical Operators)

把 0/1 当作假/真:0=假,1=真。

运算记号(常见)规则(口语)
与 AND&&·*都真才真,有一个假就假
或 OR`
非 NOT!¬取反:真变假、假变真
异或 XOR^不同为真,相同为假

3) 运算符优先级(软设会考“先算谁”)

按课堂总结(从高到低,记住相对顺序即可):

  1. 括号 ()
  2. 算术运算(* / % 高于 + -
  3. 关系运算:大小比较(> < >= <=
  4. 关系运算:相等比较(== !=
  5. 逻辑运算:! 高于 && 高于 ||
  6. 赋值 =(通常最低)

口诀:先算“非”,再算“与”,最后算“或”;赋值最后做。

4) 短路求值(Short-circuit)

  • A && B:若 A 为假,则整个表达式必为假,B 不再计算
  • A || B:若 A 为真,则整个表达式必为真,B 不再计算

课堂类比:电路“短路”,后半段不通电。

🧠 难点与易错点

  • 易错1:把 == 写成 =(考试多以“表达式求值”给你坑)
  • 易错2:忽略短路导致“赋值语句是否执行”判断错误
  • 易错3:把逻辑运算(&&/||)和位运算(&/|/^)混为一谈

🔑 关键词解释

  • 真假值/布尔值(Boolean):只有 true/false 两种值。
  • 短路求值:为了效率与安全,某些运算在结果已确定时不再计算后续子表达式。
  • 掩码(mask):用一个常量(常见十六进制)通过按位与/或来筛选某些位。

🔍 联想扩展(常见真题套路)

1) 用掩码判断“某几位是否全为 0”

套路(以“低 4 位是否全 0”为例):

  • 设掩码 mask = 0x000F(二进制低4位为1)
  • 判断:(A & mask) == 0

原因:

  • A & 0x000F 会“只保留 A 的低 4 位”,其它位清零
  • 如果结果为 0,说明低 4 位全为 0

2) 判断“某一位是否为 1”

  • 判断第 k 位(从 0 开始):(A & (1 << k)) != 0

🧪 例题(按难度)

简单(3题)

单选
逻辑运算“异或”满足“不同为真,相同为假”。那么 `1 XOR 1` 的结果是:
单选
在常见编程语言(如 C/Java)中,逻辑运算符的优先级关系正确的是:
单选
要判断整数 `x` 是否为奇数,以下条件最合适的是:

例题1(优先级)

单选
若 `a=1, b=2`,判断表达式 `(a > b) || (a == 1)` 的值。

例题2(短路 + 赋值副作用)

a=1, b=2, m=1, n=1,表达式:

(a > b) && (m = 0)

求最终 m 的值。

填空
求最终 `m` 的值。

例题3(位运算掩码:课堂同款)

字长 16 位,A=0x005A。判断 A 的低 4 位是否全为 0,应使用哪个条件最合适?

单选
选择最合适的判断条件:

困难(1题)

填空
设有 C/Java 风格代码:
c
int a = 0, b = 0;
if (a != 0 && (++b > 0)) {
  // ...
}

执行后 b 的值是:

📚 本课小结

  • 关系运算先于逻辑运算;赋值通常最后
  • 逻辑运算:! > && > ||
  • 短路会影响“后半段是否执行”
  • 位运算常配合掩码做“某几位”判断