Swift語法基礎-基本運算符之數值運算 數值運算

運算符是檢查, 改變, 合併值的特殊符號或短語. 例如, 加號 + 把計算兩個數的和(如 let i = 1 + 2)。複雜些的運行算包括邏輯與&&(如 if enteredDoorCode && passedRetinaScan),還有自增運算符 ++i 這樣讓自身加一的便捷運算。下面介紹基礎運算符中的數值運算。

數值運算

Swift 讓所有數值類型都支持了基本的四則運算:

加法 +

減法 -

乘法 *

除法 /

1 + 2 // 等於 3
5 - 3 // 等於 2
2 * 3 // 等於 6
10.0 / 2.5 // 等於 4.0

與C語言和Objective-C不同的是,Swift默認不允許在數值運算中出現溢出情況。但你可以使用 Swift 的溢出運算符來達到你有目的的溢出, (如 a &+ b )。詳情請移步: 溢出運算符。

加法操作 + 也用於字符串的拼接:

"hello, " + "world" // 等於 "hello, world"

兩個字符類型或一個字符類型和一個字符串類型, 相加會生成一個新的字符串類型:

let dog = "🐶"
let cow = "🐂"
let dogCow = dog + cow // dogCow 現在是 "🐶🐂"

1. 求餘運算

求餘運算 a % b 是計算 b 的多少倍剛剛好可以容入 a , 多出來的那部分叫餘數。

注意:求餘運算(%)在其他語言也叫取模運算. 然而嚴格說來, 我們看該運算符對負數的操 作結果, 求餘 比 取模 更合適些。

我們來談談取餘是怎麼回事, 計算 9 % 4, 你先計算出 4 的多少倍會剛好可以容入 9 中。

2 倍, 非常好, 那餘數是 1 (用'*'標出)。

在 Swift 中這麼來表達

9 % 4 // 等於 1

爲了得到 a % b 的結果, %計算了以下等式, 並輸出餘數作爲結果:

a=(b×倍數)+餘數

當倍數取最大值的時候, 就會剛好可以容入 a 中。
把 9 和 4 代入等式中, 我們得 1:

9 = ( 4 * 2 ) + 1

同樣的方法, 我來們計算 -9 % 4 :

-9 % 4 //等於-1

把 -9 和 4 代入等式, -2 是取到的最大整數:

-9 = ( 4 * -2 ) + -1

餘數是 -1。

在對負數 -b 求餘時, -b 的符號會被忽略. 這意味着 a % b 和 a % -b 的結果是相同的。

2. 浮點數求餘計算

不同於 C 和 Objective-C, Swift 中是可以對浮點數進行求餘的。

let re = 8.0.truncatingRemainder(dividingBy: 2.5)
print(re)

這個例子中, 8 除於 2.5 等於 3 餘 0.5, 所以結果是 0.5。

3. 自增和自減運算

和 C 一樣, Swift 5 以前也提供了方便對變量本身加 1 或減 1 的自增 ++ 和自減 -- 的運算符. 其 操作對象可以是整形和浮點型。

Swift 5之後停止了自增和自減的使用,如果想實現該效果代碼如下:

var i = 0
i += 1 // 現在 i= 1

4. 單目負號

數值的正負號可以使用前綴 - (即單目負號) 來切換:

// 單目負號
let three = 3
let minusThree = -three     // minusThree 等於 -3
let plusThree = -minusThree // plusThree 等於 3, 或 "負負 3"

單目負號寫在操作數之前, 中間沒有空格。

5. 單目正號

單目正號 + 不做任何改變地返回操作數的值。

let minusSix = -6
let alsoMinusSix = +minusSix // alsoMinusSix 等於 -6

雖然單目 + 做無用功, 但當你在使用單目負號來表達負數時, 你可以使用單目正號來表 達 正數, 如此你的代碼會具有對稱美。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章