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

首頁 > 學院 > 開發(fā)設計 > 正文

Swift語言指南(五)--數字字面量和數字類型轉換

2019-11-14 20:25:13
字體:
來源:轉載
供稿:網友

 

數字字面量

整數字面量寫法如下:

· 十進制數,無前綴

· 二進制數,以 0b 為前綴

· 八進制數,以 0o 為前綴

· 十六進制數,以 0x 為前綴

下面所有整數字面量值為十進制的 17 :

1 let decimalInteger = 172 let binaryInteger = 0b10001       // 17 二進制標識3 let octalInteger = 0o21           // 17 八進制標識4 let hexadecimalInteger = 0x11     // 17 十六進制標識

浮點數字面量可以是二進制(無前綴)或十六進制(以 0x 為前綴),小數點的兩側必須有各有一個數字(或十六進制數字)。他們都可以擁有一個可選的指數冪,十進制小數標記為大寫或小寫的 ,十六進制標記為大寫或小寫的 

指數冪為 exp 的十進制數字,它的基數將乘以 10exp 

· 1.25e2 表示 1.25 × 102, 或 125.0.
· 1.25e-2 表示 1.25 × 10-2, 或 0.0125.

指數冪為 exp 的十六進制數字,它的基數將乘以 2exp

· 0xFp2 表示 15 × 22,  60.0.
· 0xFp-2 表示 15 × 2-2,  3.75.

下面所有浮點數的字面值為十進制值 12.1875:

1 let decimalDouble = 12.18752 let exponentDouble = 1.21875e13 let hexadecimalDouble = 0xC.3p0

數字字面量可以包含其它的格式以便于閱讀。整數與浮點數均可以添加多余的零或下劃線以提高可讀性。兩種格式均不會影響字面量的實際值:

1 let paddedDouble = 000123.4562 let oneMillion = 1_000_0003 let justOverOneMillion = 1_000_000.000_000_1

 

數字類型轉換

代碼中應使用 Int 類型作為所有常規(guī)用途的整數常量及變量的類型,即使它們的確為非負數。日常使用中,使用默認的整數類型意味著這些整型常量與變量均可即時互相參與運算,并可與根據整數字面值推斷出的類型相匹配。

僅當手中的任務必須使用其他整數類型時才用它們,如外部數據源提供寬度明確的數據,或為了性能、內存占用等其他必需優(yōu)化的情況考慮。在這些情況下使用寬度明確的類型有助于發(fā)現偶然的數值溢出和捕捉使用時數據的原始信息。

 

整數轉換

不同數字類型所能存儲的值域范圍是不同的。一個 Int8 常量或變量能存儲 -128127 之間的數字,而一個 UInt8 常量或變量能存儲 0255 的數字。無法存進一個整型的常量或變量的數字編譯時會報錯:

1 let cannotBeNegative: UInt8 = -12 // UInt8 不能保存負數, 所以這里會報錯的
3 let tooBig: Int8 = Int8.max + 14 // Int8 不能保存超過其最大值范圍的數字,5 // 所以這里也會報錯的

由于不同數據類型能存儲的值域不同,在進行數據轉換時需要具體問題具體對待。這種實際選擇的過程可避免隱式轉換的問題,還能在代碼中強化類型轉換的意圖。

要將一個數字的類型轉換為另一種,應先把現有值初始化一個所需類型的新的數字。下例中,常量 twoThousand 的類型為 UInt16,而常量 one 的類型為 UInt8。它們無法直接相加,因為類型不同。因此,本例將調用 UInt16(one) 新建一個 UInt16 數,并將 one 的數值初始化,用初始化的新值(新值為 UInt16 )取代原始值(原始值為 UInt8 ):

1 let twoThousand: UInt16 = 2_0002 let one: UInt8 = 13 let twoThousandAndOne = twoThousand + UInt16(one)//將常量one初始化為UInt16

現在加號兩側均為 UInt16 類型,因此相加合法。輸出的常量 (twoThousandAndOne) 的推斷類型為 UInt16,因為其為兩個 UInt16 值之和。

某些類型(初始值) 是調用 Swift 類型構造函數并傳遞初始值的默認方法。幕后運作情況是,UInt16 有一個接受 UInt8 值的構造函數,因此該構造函數會被用于根據現有 UInt8 創(chuàng)建新的 UInt16。不過,在這里并不能傳入任意類型——只能傳入 UInt16 提供有構造函數的類型。擴展現有類型使其提供接受新類型(包括自己定義的類型)的構造函數的方法請見 擴展 (后面會譯到)一章。

 

整數和浮點數間的轉換

整數與浮點數類型間的轉換必須顯式指定:

1 let three = 32 let pointOneFourOneFiveNine = 0.141593 let pi = Double(three) + pointOneFourOneFiveNine4 // pi 等于 3.14159, 故而推斷類型為Double

在上例中,常量 three 的值被用來創(chuàng)建一個新的 Double 類型,以便加號兩側的類型保持一致,如果類型沒有轉換,是不允許相加的。

反過來,浮點數到整數的轉換同樣可行,整數類型可以用 DoubleFloat 值初始化:

1 let integerPi = Int(pi)2 // integerPi 等于 3, 類型推斷為Int

這樣用浮點數初始化為新的整數時,浮點數值總會被截斷。即, 4.75 變?yōu)?4-3.9 變?yōu)?-3

注意:

數字常量或變量的結合規(guī)則與數字字面量的結合規(guī)則不同。字面量 3 可以直接與字面量 0.14159 相加,因為數字字面量沒有明確指定類型,它們自身也沒有明確的類型。其類型僅當被編譯器求值時才推斷得出。

 

謝謝,Swifter-QQ群:362232993,同好者進~ 

Fork:https://github.com/Joejo/Swift-lesson-for-chinese

 

 

 

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 91aa.app| 国产精品爆操 | 久久亚洲国产午夜精品理论片 | 久久区二区 | 日韩精品dvd| 未成年人在线观看 | 欧美黄 片免费观看 | 狠狠干伊人网 | 久久另类视频 | 伊人久久电影网 | 原来神马影院手机版免费 | 久久av一区二区 | 国产精品成人av片免费看最爱 | 欧美性激情视频 | 黄色成人小视频 | 欧美成人午夜 | 香蕉视频99| 国产 一区 | 久草在线资源视频 | 美女扒开腿让男生桶爽网站 | 成人毛片100部 | 欧美乱淫 | 国产精品视频免费在线观看 | 最新一级毛片 | 精品一区二区三区免费毛片爱 | 99麻豆久久久国产精品免费 | 伊人yinren22综合网色 | 极色品影院 | 色综合网在线观看 | 免费观看亚洲视频 | 免费黄色小视频网站 | 99麻豆久久久国产精品免费 | 成人444kkkk在线观看 | av视在线 | 欧洲精品久久久久69精品 | 久色porn | 日韩中文字幕三区 | 久久国产乱子伦精品 | 亚洲情av| 国产成人精品区 | 深夜视频在线 |