2.1算術運算符
Swift支持所有的基本算術運算符,這些算術運算符用於執行基本的數學運算:加(+),減(-),乘(*),除(/),求餘(%)等。
2.1.1四則運算
+:加法運算符
- :減法運算符
* :乘法運算符
/ :除法運算符
let x = 1 + 2 //x = 3
var y = 5 - 3 //y = 2
var ab = 2 * 3 //ab= 6
var c = 10.0 / 2.5 //c=4.0
let c1:Character = "a"
let c2:Character = "b"
var s:Character = c1 + c2 //字符也能四則運算
但和c中四則運算不同,Swift中數值默認是不允許溢出的
如下:
let x:Byte = 2222 // 2222超出Byte範圍
var y:Byte = 20*30 // 20*30超出Byte範圍
2.1.2 %:取餘運算符
求餘運算(a % b)是計算b的多少倍剛剛好可以容入a,返回多出來的那部分(餘數)。
整型的取餘與c相同
a%b : a = ( b*倍數 ) + 餘數浮點取餘:
Swift的求餘運算符完全支持對浮點數求餘。
var remainder = 3 % 2
print("remainder is '\(remainderA)'.") // 出 remainder is '1'.
var remainder1 = 5.2 % 3.1
print("remainder1 is '\(remainder1)'.") // 出 remainder1 is '2.1'.
2.1.3 ++ or - - :自增和自增運算符
Swift也能對變量本身加1或減1的自增(++)和自減(–)的運算符。操作對象可以是整形和浮點型。
- 當++前置的時候,先自増 再返回。
- 當++後置的時候,先返回 再自增。
2.1.4 ±:正負號
let a = -6 //
let b = +a // b 等於 -6
let c = -a // c 等於 6
負號在操作數前會使其取反
正號在操作數前無影響
2.2算術賦值運算符
賦值運算(a = b),表示用b的值來初始化或更新a的值:
let b = 10
var a = 5
a = b
// a 現在等於 10
如果賦值的右邊是一個多元組,它的元素可以馬上被分解多個常量或變量:
let (x, y) = (1, 2)
// 現在 x 等於 1, y 等於 2
與 C 語言和 Objective-C 不同,Swift 的賦值操作並不返回任何值。所以以下代碼是錯誤的:
if x = y {
// 此句錯誤, 因爲 x = y 並不返回任何值
}
這個特性使你無法把(==)錯寫成(=),由於if x = y是錯誤代碼,Swift幫你避免此類錯誤的的發生。
2.3關係運算符
等於==
不等於!=
大於>
小於<
大於等於>=
小於等於<=
如:
1 == 1 // true, 因爲 1 等於 1
2 != 1 // true, 因爲 2 不等於 1
2 > 1 // true, 因爲 2 大於 1
1 < 2 // true, 因爲 1 小於2
1 >= 1 // true, 因爲 1 大於等於 1
2 <= 1 // false, 因爲 2 並不小於等於 1
另外
1 === 1 //true,意爲恆等
5 !== -5 //true,意爲不恆等
2.4邏輯運算符
符合布爾運算 1:true,0:false.
- 邏輯非
!a
真值取反,0 變爲1,1變爲0 - 邏輯與
a&&b
一假即假 - 邏輯或
a||b
一真即真
2.5位運算符
數在計算機中都是以二進制的形式儲存。
位運算就是直接對內存中的二進制位進行操作。
~
&
|
^
分別爲 取反,按位與,按位或,按位異或
左移運算符 <<
和右移運算 符>>
分別扮演着乘2和除2的角色
- 按位與
&
參加運算的兩個數據,按二進制位進行“與”運算。如果兩個相應的二進制位(bit)都爲1,則該位的結果值爲1;否則爲0。這裏的1可以理解爲邏輯中的true,0可以理解爲邏輯中的false.
5 & 28(僞)
-------
00101(5)
11100(28)
-------
00100(4)
- 按位或
|
如果兩個相應的二進制位(bit)都爲0,則該位的結果值爲0;否則爲1。
5 | 28(僞)
-------
00101(5)
11100(28)
-------
11101(29)
- 異或
^
相應位相 異 ,則結果爲1,否則0.
5 ^ 28(僞)
-------
00101(5)
11100(28)
-------
11001(25)
- 按位取反
~
取反運算符~
爲單目運算符,右結合性,作用是對參與運算的二進制位(bit)取反,1變爲0,0變爲1.
~ 0000 1001
---------------------
1111 0110
在二進制位運算時,還要注意空位,按照1字節(byte)=8位(bit)用0補全,注意數的位數
- 左 右移位符
<< >>
左移運算符<<
用來把操作數的各個二進制位全部左移若干位,高位丟棄,低位補0。
9<<3
<<0000 1001 (9)
-----------------------------------------------------------------------------------
0100 1000 (72)
9*9*9=27
如果數據較小,被丟棄的高位不包含 1,那麼左移 n 位相當於乘以 2 的 n 次方。
右移運算符>>
用來把操作數的各個二進制位全部右移若干位,低位丟棄,高位補1或0。
如果數據的最高位是 0,那麼就補 0;
如果最高位是 1,那麼就補 1。
9>>3
>> 0000 1001 (9)
-----------------------------------------------------------------------------------
0000 0001 (1)
如果被丟棄的低位不包含 1,那麼右移 n 位相當於除以 2 的 n 次方(但被移除的位中經常會包含 1)。