Swift數值運算

來源:互聯網
上載者:User

標籤:swift

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

  • 加法(+)
  • 減法(-)
  • 乘法(*)
  • 除法(/)
1 + 2       // 等於 35 - 3       // 等於 22 * 3       // 等於 610.0 / 2.5  // 等於 4.0

與 C 語言和 Objective-C 不同的是,Swift 預設不允許在數值運算中出現溢出情況。但你可以使用 Swift 的溢出運算子來達到你有目的的溢出(如a &+ b)。詳情參見溢出運算子。

加法運算子也用於String的拼接:

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

兩個Character值或一個String和一個Character值,相加會產生一個新的String值:

let dog: Character = "d"let cow: Character = "c"let dogCow = dog + cow// 譯者注: 原來的引號內是很可愛的小狗和小牛, 但win os下不支援表情字元, 所以改成了一般字元// dogCow 現在是 "dc"

詳情參見字元,字串的拼接。

求餘運算

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

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

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

2倍,非常好,那餘數是1(用橙色標出)

在 Swift 中這麼來表達:

9 % 4    // 等於 1

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

a = (b × 倍數) + 餘數

倍數取最大值的時候,就會剛好可以容入a中。

94代入等式中,我們得1

9 = (4 × 2) + 1

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

-9 % 4   // 等於 -1

-94代入等式,-2是取到的最大整數:

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

餘數是-1

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

浮點數求餘計算

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

8 % 2.5 // 等於 0.5

這個例子中,8除於2.5等於30.5,所以結果是一個Double0.5

自增和自增運算

和 C 語言一樣,Swift 也提供了方便對變數本身加1或減1的自增(++)和自減(--)的運算子。其操作對象可以是整形和浮點型。 ?

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

每調用一次++ii的值就會加1。實際上,++ii = i + 1的簡寫,而--ii = i - 1的簡寫。

++--既是前置又是後置運算。++ii++--ii--都是有效寫法。

我們需要注意的是這些運算子修改了i後有一個返回值。如果你只想修改i的值,那你就可以忽略這個返回值。但如果你想使用返回值,你就需要留意前置和後置操作的返回值是不同的。

  • ++前置的時候,先自増再返回。

  • ++後置的時候,先返回再自增。

例如:

var a = 0let b = ++a // a 和 b 現在都是 1let c = a++ // a 現在 2, 但 c 是 a 自增前的值 1

上述例子,let b = ++a先把a加1了再返回a的值。所以ab都是新值1

let c = a++,是先返回了a的值,然後a才加1。所以c得到了a的舊值1,而a加1後變成2。

除非你需要使用i++的特性,不然推薦你使用++i--i,因為先修改後返回這樣的行為更符合我們的邏輯。

一元負號

數值的加號或減號可以使用首碼-(即一元負號)來切換:

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

一元負號(-)寫在運算元之前,中間沒有空格。

一元正號

一元正號(+)不做任何改變地返回運算元的值。

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

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

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Swift數值運算

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.