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 * / % + - >> << < > <= >= == != |
從右到左 |
二元運算符 |
& ^ | && || |
左到右 |
三元運算符 | ?: | 從右到左 |
賦值運算符 | = += -= *= /= %= >>= <<= &= ^= |= | 從右到左 |
逗號 | , | 左到右 |