文章目录
运算符是检查、改变、合并值的特殊符号或短语,Swift 支持大部分标准 C 语言的运算符,且改进了许多特性来减少常规编码错误。如:赋值符 (=) 不返回值,以防止想要把判断相等运算符 (==) 的地方写成赋值符导致的错误;算数运算符 (+, -, *, /, %等) 会检测并不允许值溢出。
Swift 允许使用 Swift 的溢出运算符来实现溢出。此外,Swift 还提供了 C 语言没有的区间运算符,如:a…<b 或 a…b。
术语
运算符分为一元、二元、三元运算符:
一元运算符对单一操作对象,如 -a,一元运算符分前置运算符和后置运算符,分别需紧跟操作对象的前和后,如 !b;
二元运算符操作两个操作对象,如 2 + 3,是中置的;
三元运算符操作三个操作对象,和 C 语言一样,只有一个三元运算符 - 三目运算符 ( a ? b : c )。
受运算符影响的值叫操作数,例如 1 + 2,加号是二元运算符,值 1 和 2 是两个操作数。
赋值运算符
赋值运算符 ( a = b ) 表示用 b 的值来初始化或更新 a 的值。
let b = 10
var a = 5
a = b
如果赋值的右边是一个多元组,它的元素可以马上被分解成多个常量或变量。
var (x, y) = (1, 2) // 现在 x 等于 1,y 等于 2
print(x)
与 C 语言和 Objective-C 不同,Swift 的赋值操作并不返回任何值,所以以下代码是错误的。
if x = y {
// 此句错误,因为 x = y 并不返回任何值
}
这个特性可以避免把( == )错写成( = )。
算术运算符
Swift 中所有数值类型都支持了基本的四则算术运算符:加法 (+)、减法 (-)、乘法 (*)、除法 (/)。与 C 语言和 Objective-C 不同,Swift 默认不允许在数值运算中出现溢出情况,但可以使用溢出运算符来实现溢出运算,如 a &+ b。加法运算符也可用于 String 的拼接,如 "hello, " + “word” 等于 “hello, word”。
求余运算符
求余运算符 (a % b) 是计算 b 的多少倍刚好可以融入a,返回多出来的部分(余数)。
为了得到 a % b 的结果,% 计算了以下等式,并输出余数作为结果:a = (b × 倍数) + 余数,当倍数取最大值时,就会刚好可以容入 a 中。
print(9 % 4) // 9 = (4 × 2) +1
print(-9 % 4) // -9 = (4 × -2) + -1
在对负数 b 求余时,b 的符号会被忽略,这意味着 a % b 和 a % -b 的结果是一样的。