麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Swift > 正文

Swift內(nèi)置的數(shù)字類型及基本的轉(zhuǎn)換方法

2020-03-09 17:49:50
字體:
供稿:網(wǎng)友
這篇文章主要介紹了Swift內(nèi)置的數(shù)字類型及基本的轉(zhuǎn)換方法,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
 

雖然編寫任何編程語言,需要使用不同的變量來存儲(chǔ)各種信息。變量不過是保留的內(nèi)存位置來存儲(chǔ)值。這意味著,當(dāng)創(chuàng)建一個(gè)變量,在內(nèi)存中會(huì)保留一些空間。

可能喜歡像存儲(chǔ)字符串,字符,寬字符,整數(shù),浮點(diǎn)數(shù),布爾等各種數(shù)據(jù)類型的信息。根據(jù)一個(gè)變量的數(shù)據(jù)類型,操作系統(tǒng)分配內(nèi)存,并決定什么可以存儲(chǔ)保留在存儲(chǔ)器。

內(nèi)置數(shù)據(jù)類型
Swift 為程序員提供內(nèi)置以及用戶定義的種類數(shù)據(jù)類型。 以下是聲明變量使用最頻繁的基本數(shù)據(jù)類型的列表:

Int 或 UInt - 這是用于整數(shù)。更具體地可以使用Int32,Int64來定義32或64位有符號(hào)整數(shù),其中作為UInt32或UInt64用來定義32或64位無符號(hào)整數(shù)的變量。 For example, 42 and -23.

  • Float - 這是用來表示一個(gè)32位浮點(diǎn)數(shù),一般用于使用較小的小數(shù)點(diǎn)數(shù)字。 例如:3.14159,0.1,和 -273.158。
  • Double - 這是用來表示一個(gè)64位浮點(diǎn)數(shù),用于非常大的浮點(diǎn)值。  例如: 3.14159, 0.1, 和 -273.158.
  • Bool - 這代表一個(gè)布爾值,真或假。
  • String - 這是有序字符集合。例如, "Hello, World!"
  • Character - 這是一個(gè)單字符字符串。例如, "C"
  • Optional - 這表示可以容納一個(gè)值或沒有任何值的變量。

有下列有關(guān)整數(shù)類型要點(diǎn):

  • 在32位的平臺(tái)上,Int 大小與 Int32 的大小相同。
  • 在64位的平臺(tái)上,Int 大小與 Int64 的大小相同。
  • 在32位的平臺(tái)上,UInt 的大小與 UInt32 的大小相同。
  • 在 64 位的平臺(tái)上,UInt 的大小與 UInt64 的大小相同。
  • Int8, Int16, Int32, Int64 可以用來表示 8 Bit, 16 Bit, 32 Bit 和 64 Bit 形成有符號(hào)整數(shù)。

UInt8, UInt16, UInt32 和 UInt64 可以用來表示 8 Bit, 16 Bit, 32 Bit 和 64 Bit 形成無符號(hào)整數(shù)。
綁定值
下表顯示變量類型,需要多少內(nèi)存存儲(chǔ)此值在存儲(chǔ)器中,在這種類型的變量可以存儲(chǔ)最大值和最小值。

Swift內(nèi)置的數(shù)字類型及基本的轉(zhuǎn)換方法

類型別名
可以從現(xiàn)有類型使用typealias創(chuàng)建一個(gè)新的名稱。以下是使用簡單 typealias 的語法來定義新類型:

復(fù)制代碼代碼如下:

typealias newname = type

例如,下面告訴編譯器Feet 是 Int 的另一個(gè)名字:
復(fù)制代碼代碼如下:

typealias Feet = Int

現(xiàn)在,下面的聲明是完全合法的,并創(chuàng)建一個(gè)整型變量為 distance:
復(fù)制代碼代碼如下:

import Cocoa

 

typealias Feet = Int
var distance: Feet = 100
println(distance)


當(dāng)我們使用 playground 運(yùn)行上面的程序,到以下結(jié)果。

 

100

類型安全
Swift 是一種安全的語言,這意味著,如果代碼的一部分需要一個(gè)字符串, 那么不能錯(cuò)誤地傳遞一個(gè)int。

由于 Swift 是類型安全的,當(dāng)類型檢查時(shí)它執(zhí)行編譯代碼并標(biāo)志類型不匹配的錯(cuò)誤。

復(fù)制代碼代碼如下:

import Cocoa

 

var varA = 42
varA = "This is hello"
println(varA)


當(dāng)我們編譯上面的程序它產(chǎn)生以下編譯時(shí)錯(cuò)誤。
復(fù)制代碼代碼如下:

Playground execution failed: error: :6:6: error: cannot assign to 'let' value 'varA'
varA = "This is hello"

類型推斷
在它編譯代碼時(shí),類型推斷使編譯器自動(dòng)推導(dǎo)出特定表達(dá)式的類型, 簡單地通過檢查所提供的值。Swift 采用類型推斷制定出合適的類型如下。
復(fù)制代碼代碼如下:

 import Cocoa

 

// varA is inferred to be of type Int
var varA = 42
println(varA)

// varB is inferred to be of type Double
var varB = 3.14159
println(varB)

// varC is also inferred to be of type Double
var varC = 3 + 0.14159
println(varC)


當(dāng)我們使用 playground 運(yùn)行上面的程序,得到以下結(jié)果。

 

423.141593.14159

Swift數(shù)字類型之間的轉(zhuǎn)換
Swift數(shù)字類型之間的轉(zhuǎn)換Swift是一種安全的語言,對于類型的檢查非常嚴(yán)格,不同類型之間不能隨便轉(zhuǎn)換。
一、整型之間的轉(zhuǎn)換
在C和Objective-C等其他語言中,整型之間有兩種轉(zhuǎn)換方法:
從小范圍數(shù)到大范圍數(shù)轉(zhuǎn)換是自動(dòng)的;
從大范圍數(shù)到小范圍數(shù)需要強(qiáng)制類型轉(zhuǎn)換,有可能造成數(shù)據(jù)精度的丟失。
而在Swift中這兩種方法是行不通的,我們需要通過一些函數(shù)進(jìn)行顯式地轉(zhuǎn)換,代碼如下:

復(fù)制代碼代碼如下:

let historyScore:UInt8 = 90

 


let englishScore:UInt16 = 130


let totalScore = historyScore + englishScore  //錯(cuò)誤 ①


let totalScore = UInt16(historyScore) + englishScore   //正確 ②


let totalScore = historyScore + UInt8(englishScore)  //正確 ③

 

上述代碼聲明和初始化了兩個(gè)常量historyScore和englishScore,我們把它們相加賦值給totalScore。如果采用第①行代碼實(shí)現(xiàn)相加,程序就會(huì)有編譯錯(cuò)誤,原因是historyScore是UInt8類型,而englishScore是UInt16類型,它們之間不能轉(zhuǎn)換。
我們有兩種轉(zhuǎn)換方法。
一種是把UInt8的historyScore轉(zhuǎn)換為UInt16類型。由于是從小范圍數(shù)轉(zhuǎn)換為大范圍數(shù),這種轉(zhuǎn)換是安全的。代碼第②行UInt16(historyScore)就是正確的轉(zhuǎn)換方法。
另外一種是把UInt16的englishScore轉(zhuǎn)換為UInt8類型。由于是從大范圍數(shù)轉(zhuǎn)換為小范圍數(shù),這種轉(zhuǎn)換是不安全的,如果轉(zhuǎn)換的數(shù)比較大會(huì)造成精度的丟失。代碼第③行UInt8(englishScore)是正確的轉(zhuǎn)換方法。由于本例中englishScore的值是130,這個(gè)轉(zhuǎn)換是成功的,如果把這個(gè)數(shù)修改為1300,雖然程序編譯沒有問題,但是會(huì)在控制臺(tái)中輸出異常信息,這是運(yùn)行期異常。
上述代碼中,UInt16(historyScore)和UInt8(englishScore)事實(shí)上是構(gòu)造器,能夠創(chuàng)建并初始化另外一個(gè)類型。二、整型與浮點(diǎn)型之間的轉(zhuǎn)換
整型與浮點(diǎn)型之間的轉(zhuǎn)換與整型之間的轉(zhuǎn)換類似,因此我們將上一節(jié)的示例修改如下:

復(fù)制代碼代碼如下:

let historyScore:Float = 90.6         ①

 


let englishScore:UInt16 = 130         ②


let totalScore = historyScore + englishScore  //錯(cuò)誤         ③


let totalScore = historyScore + Float(englishScore)  //正確,安全    ④


let totalScore = UInt16(historyScore) + englishScore  //正確,小數(shù)被截掉 ⑤


上述代碼經(jīng)過了一些修改,第①行代碼historyScore變量類型是Float類型。第②行代碼englishScore變量還是UInt16類型。其中第③行代碼直接進(jìn)行了計(jì)算,結(jié)果有編譯錯(cuò)誤。第④行代碼是將UInt16類型的englishScore變量轉(zhuǎn)換為Float類型,這種轉(zhuǎn)換是最安全的。第⑤行代碼是將Float類型的historyScore變量轉(zhuǎn)換為UInt16類型,這種轉(zhuǎn)換首先會(huì)導(dǎo)致小數(shù)被截掉,另外如果historyScore變量數(shù)很大,會(huì)導(dǎo)致運(yùn)行期異常,這與整型之間的轉(zhuǎn)換是類似的。

 

 



注:相關(guān)教程知識(shí)閱讀請移步到swift教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 销魂美女一区二区 | 久草中文网 | 嫩草影院在线观看网站成人 | 欧美日韩一 | 午夜久久久精品一区二区三区 | 神马顶级推理片免费看 | 蜜桃网站在线观看 | 高清中文字幕在线 | 亚洲乱搞 | 亚洲射情 | 91精品国产乱码久 | 欧美人与zoxxxx另类9 | 亚洲网站一区 | 免看黄大片aa | 日韩一级片一区二区三区 | 日韩av成人 | 黄色一级毛片免费看 | 精品一区二区免费视频视频 | 草久在线 | wwwcom国产| 久久成人免费观看 | 人人做人人看 | 精品久久久久久久久久久久久 | 久草在线资源视频 | 叶子楣成人爽a毛片免费啪啪 | 久久一区二区三区av | 澳门一级淫片免费视频 | 亚洲无马在线观看 | 成人福利在线播放 | 久久久久亚洲精品 | 国产一区二精品区在线 | 午夜小影院 | 国产精品久久久久久久久久 | 久久久成人一区二区免费影院 | 久久亚洲一区二区三区成人国产 | 一级观看免费完整版视频 | aaaaaaa毛片 | 精品国产一区二区三区成人影院 | 成人激情综合网 | 成人在线免费视频播放 | 欧美成人精品欧美一级 |