概述

运算顺序(或运算符优先级)是一组规则,反映了在评估给定数学表达式时应首先执行哪些操作。

讨论

单一的数值本身是重要的;然而,我们需要一种方法来操作这些值(处理数据)。科学家们希望有一种准确的机器来操作数值,他们希望这台机器能够处理数字或计算答案(即计算结果)。在1950年前,字典中的计算机定义是“执行计算的人类”。因此,所有描述数据操作的术语都是以数学为导向的。此外,两个基本的数据类型族(整数族和浮点族)完全由数字值组成。

带评估的表达式示例

让我们看一个例子:2 + 3 * 4 + 5 这个表达式,结果是多少?

  • "+" 表示加法, "*" 表示乘法,这些是我们的运算符。
  • 2、3、4 和 5 是我们的操作数。
  • 优先级规则表明乘法优先于加法。
  • 因此,我们首先计算 3 * 4 得到 12。
  • 现在我们有:2 + 12 + 5。
  • 结合性规则表明加法从左到右进行,因此我们计算 2 + 12 得到 14。
  • 现在我们有:14 + 5。
  • 最后,我们计算 14 + 5 得到 19;这就是表达式的值。

括号会改变结果。比如 (2 + 3) * (4 + 5) 结果是 45。

括号也会改变结果。比如 (2 + 3) * 4 + 5 结果是 25。

运算符优先级图表

每种计算机语言都有一些定义优先级和结合性的规则。它们通常遵循我们可能已经学过的规则。乘法和除法优先于加法和减法,这是我们在小学学过的规则,这个规则仍然有效。

运算顺序:

  1. 括号
  2. 指数
  3. 乘法 / 除法
  4. 加法 / 减法

一个常见的助记法是 PEMDAS(Please Excuse My Dear Aunt Sally)。优先级规则可能在不同编程语言之间有所不同。你应该参考你正在使用的编程语言的参考表,通常这些表格被称为运算符优先级表、运算符优先级图表或运算顺序图表。在评估表达式时,按照需要查看这些图表。

有效表达式

有效表达式由操作数和运算符组成,并且按正确的方式组合。为什么是 (s)?因为某些运算符是:

  • 单目运算符 – 只有一个操作数
  • 双目运算符 – 具有两个操作数,分别位于运算符的两侧
  • 三目运算符 – 有两个运算符符号,分隔三个操作数

大多数运算符是双目运算符,也就是说它们需要两个操作数。一些优先级图表会指明哪些运算符是单目和三目的,其他的则是双目的。

关键术语

  • 结合性(associativity):决定了同一优先级的运算符如何顺序操作操作数。
  • 评估(evaluation):将运算符应用于操作数并得到一个单一结果的过程。
  • 表达式(expression):由操作数和运算符按正确顺序组成,最终简化(或评估)为一个单一值。
  • 操作数(operand):接受运算符作用的值。
  • 运算符(operator):一种语言特定的语法符号(通常是符号),用于对一个或多个操作数执行操作。
  • 括号(parentheses):改变表达式中运算的顺序。先做括号中的部分。
  • 优先级(precedence):决定了运算符如何顺序操作操作数。

参考文献

  • cnx.org: 《编程基础 - 使用 C++ 的模块化结构化方法》
  • Wikipedia: 运算顺序
  • Wikipedia: 运算顺序
最后修改: 2025年01月10日 星期五 14:57