位置:首页 > 高级语言 > Swift在线教程 > Swift优先级和结合性

Swift优先级和结合性

优先级和结合性

运算符的优先级使得一些运算符优先于其他运算符,高优先级的运算符会先被计算。

结合性定义相同优先级的运算符在一起时是怎么组合或关联的,是和左边的一组呢,还是和右边的一组。意思就是,到底是和左边的表达式结合呢,还是和右边的表达式结合?

在混合表达式中,运算符的优先级和结合性是非常重要的。举个例子,为什么下列表达式的结果为4

2 + 3 * 4 % 5
// 结果是 4

如果严格地从左计算到右,计算过程会是这样:

  • 2 + 3 = 5
  • 5 * 4 = 20
  • 20 / 5 = 4 余 0

但是正确答案是4而不是0。优先级高的运算符要先计算,在Swift和C语言中,都是先乘除后加减的。所以,执行完乘法和求余运算才能执行加减运算。

乘法和求余拥有相同的优先级,在运算过程中,我们还需要结合性,乘法和求余运算都是左结合的。这相当于在表达式中有隐藏的括号让运算从左开始。

2 + ((3 * 4) % 5)

3 * 4 = 12,所以这相当于:

2 + (12 % 5)

12 % 5 = 2,所这又相当于

2 + 2

计算结果为 4。

查阅Swift运算符的优先级和结合性的完整列表,请看表达式


注意:
Swift的运算符较C语言和Objective-C来得更简单和保守,这意味着跟基于C的语言可能不一样。所以,在移植已有代码到Swift时,注意去确保代码按你想的那样去执行。