测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
B79

附录C:运算符优先级与结合性

引入

章前总览 算表达式时:先比优先级;同级再看结合性(从左到右还是从右到左)。不必死记,用熟了自然记住;拿不准就加括号。

要点:

  • 优先级:谁先算
  • 结合性:同级怎么走
  • 可读性:宁可多写括号

1 优先级示例

操作数两侧运算符优先级不同时,先做优先级高的。

</> 乘法先于加法

a + b * c
// 先算 b * c,再与 a 相加
// 因为 * 优先级高于 +

一级里常碰到的高低关系(由高到低印象)

  • 括号 () 最高。
  • 单目:++ -- ! -(负号)等较高。
  • 乘除取余 * / % 高于加减 + -
  • 关系 < <= > >= 高于相等 == !=
  • 逻辑与 && 高于逻辑或 ||
  • 赋值 = 很低。
  • 第8章提过:a<b<ci&3==0 等“看起来顺口”的写法,往往被优先级坑到。

2 结合性示例

两侧运算符优先级相同时,按结合方向运算。

</> 赋值是右结合

a = b = 5;
// 等效于 a = (b = 5);
// 先右边赋值,再把结果赋给左边
  • 多数常用运算符是左结合(如 a-b-c(a-b)-c)。
  • 赋值是典型的右结合

3 可读性:主动加括号

即便优先级相同,也可以加括号让人一眼看懂。

</> 取某位数字

n / 10 % 10      // 合法:/ 与 % 同级、左结合
(n / 10) % 10    // 更好懂:先除再取余
  • 优先级与结合性不靠死背,多写多对照书上的优先级表。
  • 考试写题:宁可多括号,少歧义。
小结

三条注意事项:

1. 不用死记,用多了就熟
2. 同级也可加 () 提高可读性
3. 大部分左结合;赋值是右结合
里程碑达成:

一级附录 A–C 到此学完;写题时 Dev-C++、格式化 I/O、表达式括号可随时回来查阅。