位置:首頁 > 高級語言 > Swift教學 > Swift運算符

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

* / %

+ -

>> <<

< > <= >=

== !=

從右到左
二元運算符

&

^

|

&&

||

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