Swift 运算符优先级和结合性

在本文中,您将了解用于计算带有运算符和操作数的表达式的规则。

运算符优先级是一组规则,用于确定首先执行哪个运算符。

在学习运算符优先级之前,请确保了解 Swift 运算符


让我们举个例子,假设一个表达式中有多个运算符。

  1. var num = 8 + 5 * 4 // 28

在这里,

  • 如果先执行 +,则 num 的值将为 52
  • 如果先执行 *,则 num 的值将为 28

在这种情况下,运算符优先级用于标识首先执行哪个运算符。* 的运算符优先级高于 + 因此首先执行乘法。


运算符优先级表

下表列出了 Swift 运算符的优先级。表中显示的值越高,其优先级越高。

运算符实例
位移位 >><<
乘除余%*/
加减|-+- ^
区间(范围) ..<…
转换is as
空合运算 ??
比较 !=><>=<======
逻辑与&&
逻辑或||
三元运算? :
优先赋值|=%=/=*=>>=<<=^=+=-=

复数赋值运算符的运算符优先级实例

  1. var num = 15
  2. num += 10 - 2 * 3
  3. print(num)

结果为:

  1. 19

在上面的实例中,我们创建了一个值为 15 的变量 num

这里,从高到低的优先顺序是 *-、和 +=。因此,该语句执行为 num+=10-(2*3)


Swift 算术结合性

如果一个表达式有两个具有相似优先级的运算符,则根据其结合性(从左到右或从右到左)计算表达式。例如:

  1. print(6 * 4 / 3) // 8

这里,运算符 */ 具有相同的优先级。并且,它们的关联性是从左到右。因此,首先执行 6*4

注意:如果我们想先执行除法,我们可以像这样使用括号 print(6 * (4/3))


Swift 算术结合性表

如果一个表达式有两个具有相似优先级的运算符,则根据其结合性对该表达式求值。

  • 左结合性 - 运算符从左到右求值
  • 右结合性 - 运算符从右向左求值
  • 非结合性 - 运算符没有定义的行为

比如,

  1. print (6 * 4 / 3)

这里,运算符 */ 具有相同的优先级。并且,它们的关联性是从左到右。因此,首先执行 6*4

下表显示了 Swift 运算符的结合性。

运算符结合性
位移位: >><<none
乘除余: %*/left
加减: |+-^left
区间(范围): ..<…none
转换: is asnone
空合运算: ??right
比较: !=><>=<======none
逻辑与: &&left
逻辑或: ||left
三元运算: ? :right
赋值: |=%=/=*=>>=<<=^=right

分类导航