Swift 运算符优先级和关联性

运算符优先级是一组决定哪个运算符首先被执行的规则。

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


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

var num = 8 + 5 * 4 // 28

这里,

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

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


运算符优先级表

下表列出了 Swift 运算符的优先级。它在表中出现的位置越高,优先级越高。

运算符 示例
位移 >> <<
乘法 % * /
加法 | - + - ^
范围 ..< ...
类型转换 is as
nil 合并 ??
比较 != > < >= <= === ==
逻辑与 &&
逻辑或 ||
三元运算符 ? :
赋值优先级 |= %= /= *= >>= <<= ^= += -=

示例:带复杂赋值运算符的运算符优先级

var num = 15

num += 10 - 2 * 3
print(num)

输出

19

在上面的示例中,我们创建了一个值为 15 的变量 num。请注意语句

num += 10 - 2 * 3

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


Swift 运算符关联性

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

print(6 * 4 / 3)     // 8 

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

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


运算符关联性表

如果一个表达式中有两个具有相似优先级的运算符,则根据其关联性来计算表达式。

  • 左关联性 - 运算符从左到右计算
  • 右关联性 - 运算符从右到左计算
  • 非关联性 - 运算符没有定义的行为

例如,

print (6 * 4 / 3)

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

下表显示了 Swift 运算符的关联性。

运算符 结合性
位移>> <<
乘法% * /
加法| + - ^
范围..< ...
类型转换is as
nil 合并??
比较!= > < >= <= === ==
逻辑与&&
逻辑或||
三元运算符? :
赋值|= %= /= *= >>= <<= ^=
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战