一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Swift - Swift內置的數字類型及基本的轉換方法

Swift內置的數字類型及基本的轉換方法

2020-12-21 14:57Swift教程網 Swift

這篇文章主要介紹了Swift內置的數字類型及基本的轉換方法,是Swift入門學習中的基礎知識,需要的朋友可以參考下

雖然編寫任何編程語言,需要使用不同的變量來存儲各種信息。變量不過是保留的內存位置來存儲值。這意味著,當創建一個變量,在內存中會保留一些空間。

可能喜歡像存儲字符串,字符,寬字符,整數,浮點數,布爾等各種數據類型的信息。根據一個變量的數據類型,操作系統分配內存,并決定什么可以存儲保留在存儲器。

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

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

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

有下列有關整數類型要點:

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

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

Swift內置的數字類型及基本的轉換方法

類型別名
可以從現有類型使用typealias創建一個新的名稱。以下是使用簡單 typealias 的語法來定義新類型:

復制代碼 代碼如下:

typealias newname = type


例如,下面告訴編譯器Feet 是 Int 的另一個名字:

復制代碼 代碼如下:

typealias Feet = Int


現在,下面的聲明是完全合法的,并創建一個整型變量為 distance:

復制代碼 代碼如下:


import Cocoa

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


當我們使用 playground 運行上面的程序,到以下結果。

?
1
100

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

由于 Swift 是類型安全的,當類型檢查時它執行編譯代碼并標志類型不匹配的錯誤。

復制代碼 代碼如下:


import Cocoa

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


當我們編譯上面的程序它產生以下編譯時錯誤。

復制代碼 代碼如下:

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


類型推斷
在它編譯代碼時,類型推斷使編譯器自動推導出特定表達式的類型, 簡單地通過檢查所提供的值。Swift 采用類型推斷制定出合適的類型如下。

復制代碼 代碼如下:


 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)


當我們使用 playground 運行上面的程序,得到以下結果。

?
1
2
3
42
3.14159
3.14159

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

復制代碼 代碼如下:


let historyScore:UInt8 = 90


let englishScore:UInt16 = 130


let totalScore = historyScore + englishScore  //錯誤 ①


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


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

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

復制代碼 代碼如下:


let historyScore:Float = 90.6         ①


let englishScore:UInt16 = 130         ②


let totalScore = historyScore + englishScore  //錯誤         ③


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


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


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

延伸 · 閱讀

精彩推薦
  • SwiftSwift教程之基礎數據類型詳解

    Swift教程之基礎數據類型詳解

    這篇文章主要介紹了Swift教程之基礎數據類型詳解,本文詳細講解了Swift中的基本數據類型和基本語法,例如常量和變量、注釋、分號、整數、數值類型轉換等...

    Swift教程網5162020-12-18
  • SwiftSwift的74個常用內置函數介紹

    Swift的74個常用內置函數介紹

    這篇文章主要介紹了Swift的74個常用內置函數介紹,這篇文章列舉出了所有的Swift庫函數,內置函數是指無需引入任何模塊即可以直接使用的函數,需要的朋友可...

    Swift教程網5802020-12-19
  • SwiftSwift實現多個TableView側滑與切換效果

    Swift實現多個TableView側滑與切換效果

    這篇文章主要為大家詳細介紹了Swift實現多個TableView側滑與切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    乞力馬扎羅的雪雪5822021-01-08
  • SwiftSwift中轉義閉包示例詳解

    Swift中轉義閉包示例詳解

    在Swift 中的閉包類似于結構塊,并可以在任何地方調用,下面這篇文章主要給大家介紹了關于Swift中轉義閉包的相關資料,需要的朋友可以參考下...

    小小小_小朋友11412021-12-26
  • Swiftswift where與匹配模式的實例詳解

    swift where與匹配模式的實例詳解

    這篇文章主要介紹了swift where與匹配模式的實例詳解的相關資料,這里附有簡單的示例代碼,講的比較清楚,需要的朋友可以參考下...

    追到夢的魔術師14382021-01-06
  • Swiftmac git xcrun error active developer path 錯誤

    mac git xcrun error active developer path 錯誤

    本文主要是講訴了如何解決在mac下使用git;xcode4.6的環境時,出現了錯誤(mac git xcrun error active developer path)的解決辦法,希望對大家有所幫助...

    Swift教程網2232020-12-16
  • SwiftSwift使用CollectionView實現廣告欄滑動效果

    Swift使用CollectionView實現廣告欄滑動效果

    這篇文章主要為大家詳細介紹了Swift使用CollectionView實現廣告欄滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Stevin的技術博客12372021-01-13
  • SwiftSwift能代替Objective-C嗎?

    Swift能代替Objective-C嗎?

    這是我在網上上看到的答案,復制粘貼過來和大家分享一下,因為我和很多人一樣很關心Swift的出現對Mac開發的影響和對Objective-C的影響。...

    Swift教程網4412020-12-16
主站蜘蛛池模板: 国产高清久久 | 美女被的视频 | 精品国产一区二区三区久 | 深夜激情网 | 亚洲图片综合网 | 四虎永久成人免费 | 亚洲人成网站在线观看青青 | 免费稚嫩福利 | 毛片亚洲毛片亚洲毛片 | 小苹果日本在线观看 | 好紧好爽的午夜寂寞视频 | 四缺一小说 | 奇米网狠狠网 | 32pao强力打造免费高速高 | 二次元美女互摸隐私互扒 | 男人在女人下面狂躁 | 91久久国产露脸精品 | 国产偷啪 | 羞羞麻豆国产精品1区2区3区 | 亚洲国产成人久久综合一区 | 亚洲国产精品日韩高清秒播 | 美女用屁股把人吞进肚子 | 成人精品免费网站 | 日本国产一区二区三区 | 星星动漫在线观看无删减 | 天堂网在线网站成人午夜网站 | 午夜香蕉成视频人网站高清版 | 男同gay作爰视频网站 | 22222色男人的天堂 | 日韩精品欧美激情国产一区 | 精品视频免费在线观看 | 亚洲男人天堂a | 国产一区二区精品久久 | 国产高清久久 | 天天操丝袜 | 果冻传媒和91制片厂网站软件 | 国产精品久久久久影视不卡 | 45分钟做受片免费观看 | 色综合天天综合网看在线影院 | 免费一区二区视频 | 日韩妹妹|