Swift運算符
運算符是一個符號,告訴編譯器執行特定的數學或邏輯操作。 Objective-C/Swift 語言有豐富的內置操作符,並提供以下類型的運算符:
- 算術運算符
- 比較運算符
- 邏輯運算符
- 位運算符
- 賦值運算符
- 範圍操作符
- 其它運算符
本教程將一個接一個介紹算術,關係,邏輯,位分配和其他運算符。
算術運算符
下表列出了所有 Swift 語言支持的算術運算符。假設變量A=10,變量B=20,則:
算術運算符實例
運算符
描述
示例
+
兩個操作數相加
A + B = 30
−
從第一操作減去第二操作數
A − B = -10
*
兩個操作數相乘
A * B = 200
/
由分母除以分子
B / A = 2
%
模運算符,得到其餘數在整數/浮點相除後
B % A = 0
++
增量運算符,整數值增加一
A++ = 11
--
遞減運算符,整數值減一
A-- = 9
比較運算符
下表列出了所有 Swift 語言支持的關係運算符。假設變量A=10,變量B=20,則:
比較運算符
操作符
描述
示例
==
檢查兩個操作數的值是否相等; 如果是,則條件變爲真
(A == B) 非 true.
!=
檢查兩個操作數的值是否相等; 如果值不相等,則條件變爲真
(A != B) 是 true.
>
如果左操作數的值大於右操作數的值; 則條件變爲真
(A > B) 非 true.
<
如果左操作數的值小於右操作數的值; 則條件變爲真
(A < B) 是 true.
>=
如果左操作數的值大於或等於右操作數的值;則條件變爲真
(A >= B) 非 true.
<=
如果左操作數的值小於或等於右操作數的值; 則條件變爲真
(A <= B) 是 true.
邏輯運算符
下表列出了所有 Swift 語言支持的邏輯運算符。假設變量A=1,變量B=0,則:
邏輯運算符實例
操作符
描述
示例
&&
所謂邏輯與運算符。如果兩個操作數是不爲零,則條件爲真
(A && B) 爲 false
||
所謂邏輯或運算。如果任何兩個操作數是非零那麼條件變爲真
(A || B) 爲 true
!
所謂的邏輯非運算符。使用反轉操作數的邏輯狀態。如果條件爲真,那麼邏輯非操作後,結果爲假
!(A && B) 爲 true
位運算符
按位操作符對位和位操作進行一下。 &, |, 和 ^,其真值表如下
p
q
p & q
p | q
p ^ q
0
0
0
0
0
0
1
0
1
1
1
1
1
1
0
1
0
0
1
1
Assume if A = 60; and B = 13; now in binary format they will be as follows:
A = 0011 1100
B = 0000 1101
A & B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
Swift 語言支持位運算符列出如下表。假設變量A=60,變量B=13,則:
位運算符實例
操作符
描述
示例
&
如果它存在於兩個操作數就是二進制與操作拷貝位的結果
(A & B) = 12, 也就是 0000 1100
|
二進制或運算拷貝位,如果它存在一個操作數
(A | B) = 61, 也就是 0011 1101
^
二進制異或拷貝位,如果它被設置在一個操作數而不是兩個
(A ^ B) = 49, 也就是 0011 0001
~
二進制的補操作符是一元的,具有「翻轉」位的效果
(~A ) = -61, 也就是 1100 0011
<<
二進制向左移位運算符。左操作數的值向左移動由右操作數指定的位數
A << 2 = 240, 也就是1111 0000
>>
二進制向右移位運算符。左操作數的值是通過正確的操作數指定的位數向右移動
A >> 2 = 15, 也就是 0000 1111
賦值運算符
Swift 支持以下賦值運算符:
賦值運算符實例
運算符
描述
示例
=
簡單賦值運算符,賦值從右側的操作數到左側的操作數
C = A + B 將分配A + B 的值到 C
+=
相加和賦值運算符,相加右操作數和左操作數並將結果分配給左操作數
C += A 相當於 C = C + A
-=
減法和賦值運算符,它從左邊的操作數減去右操作數,並將結果分配給左操作數
C -= A 相當於 C = C - A
*=
乘法和賦值運算符,右邊的操作數乘以左操作數,並將結果分配給左操作數
C *= A 相當於 C = C * A
/=
相除並賦值運算符,它把左操作數與右操作數相除,並結果分配給左操作數
C /= A 相當於 C = C / A
%=
模量和賦值運算符,它需要使用兩個操作數模量並結果分配給左操作數
C %= A 相當於 C = C % A
<<=
左移賦值運算符
C <<= 2 相當於 C = C << 2
>>=
向右移位並賦值運算符
C >>= 2 相當於 C = C >> 2
&=
按位與賦值運算符
C &= 2 相當於 C = C & 2
^=
按位異或並賦值運算符
C ^= 2 相當於 C = C ^ 2
|=
按位或並賦值運算符
C |= 2 相當於 C = C | 2
範圍操作符
Swift包括兩個範圍的運算符,用於表達值的範圍的快捷方式。下面的表格顯示了這兩個運算符。
範圍運算符
運算符
描述
示例
封閉範圍
(a...b) 定義從 a 到b,並且這些範圍內的值包括 a 和 b
1...5 結果是 1, 2, 3, 4 和 5
半開區間/範圍
(a..< b) 定義從 a 到 b,但範圍內的值不包括 b。
1..< 5 結果是 1, 2, 3, 和 4
其它運算符
還有其他一些重要的運算符,包括範圍和 ? : ,Swift 語言也支持。
其它運算符實例
運算符
描述
示例
負號
數值符號可以使用前綴來切換 -
-3 或 -4
一元加
返回操作的值,但沒有任何變化
+6 結果是 6
三元條件
條件 ? X : Y
如果條件爲真 ? 那麼爲值 X : 否則爲值 Y
運算符優先級
運算符優先級決定術語的表達分組。這會影響表達式如何計算。某些操作符的優先級高於其他;例如,乘法運算符的優先級比加法運算符高:
例如:x=7 + 3* 2; 這裏,x被賦值爲13,不是20,因爲運算符 * 的優先級比運算符 + 高,所以它首先被乘以3 * 2,然後添加到7。
這裏,具有最高優先級操作符出現在表的頂部,那些優先級最低的在底部。在一個表達式,更高的優先級操作符將首先評估計算。
運算符優先級
操作符類型
操作符
關聯性
主要表達式運算符
() [] . expr++ expr--
左到右
一元運算符
* & + - ! ~ ++expr --expr
* / %
+ -
>> <<
< > <= >=
== !=
從右到左
二元運算符
&
^
|
&&
||
左到右
三元運算符
?:
從右到左
賦值運算符
= += -= *= /= %= >>= <<= &= ^= |=
從右到左
逗號
,
左到右