Swift 运算符优先级和结合性
在本文中,您将了解用于计算带有运算符和操作数的表达式的规则。
运算符优先级是一组规则,用于确定首先执行哪个运算符。
在学习运算符优先级之前,请确保了解 Swift 运算符。
让我们举个例子,假设一个表达式中有多个运算符。
var num = 8 + 5 * 4 // 28
在这里,
- 如果先执行
+
,则num
的值将为 52 - 如果先执行
*
,则num
的值将为 28
在这种情况下,运算符优先级用于标识首先执行哪个运算符。*
的运算符优先级高于 +
因此首先执行乘法。
运算符优先级表
下表列出了 Swift 运算符的优先级。表中显示的值越高,其优先级越高。
运算符 | 实例 |
---|---|
位移位 | >><< |
乘除余 | %*/ |
加减 | |-+- ^ |
区间(范围) | ..<… |
转换 | is as |
空合运算 | ?? |
比较 | !=><>=<====== |
逻辑与 | && |
逻辑或 | || |
三元运算 | ? : |
优先赋值 | |=%=/=*=>>=<<=^=+=-= |
复数赋值运算符的运算符优先级实例
var num = 15
num += 10 - 2 * 3
print(num)
结果为:
19
在上面的实例中,我们创建了一个值为 15 的变量 num
这里,从高到低的优先顺序是 *
、-
、和 +=
。因此,该语句执行为 num+=10-(2*3)
。
Swift 算术结合性
如果一个表达式有两个具有相似优先级的运算符,则根据其结合性(从左到右或从右到左)计算表达式。例如:
print(6 * 4 / 3) // 8
这里,运算符 *
和 /
具有相同的优先级。并且,它们的关联性是从左到右。因此,首先执行 6*4
。
注意:如果我们想先执行除法,我们可以像这样使用括号 print(6 * (4/3))
。
Swift 算术结合性表
如果一个表达式有两个具有相似优先级的运算符,则根据其结合性对该表达式求值。
- 左结合性 - 运算符从左到右求值
- 右结合性 - 运算符从右向左求值
- 非结合性 - 运算符没有定义的行为
比如,
print (6 * 4 / 3)
这里,运算符 *
和 /
具有相同的优先级。并且,它们的关联性是从左到右。因此,首先执行 6*4
。
下表显示了 Swift 运算符的结合性。
运算符 | 结合性 |
---|---|
位移位: >><< | none |
乘除余: %*/ | left |
加减: |+-^ | left |
区间(范围): ..<… | none |
转换: is as | none |
空合运算: ?? | right |
比较: !=><>=<====== | none |
逻辑与: && | left |
逻辑或: || | left |
三元运算: ? : | right |
赋值: |=%=/=*=>>=<<=^= | right |