第二章 整数、浮点数与布尔值
第一节 整数字面量
在Swift中可以使用二进制、八进制、十六进制与十进制这四种技术来表达一个整数字面量
我们通常用的整数字面量默认为十进制数,那如果要表示一个二进制整数字面量,我们需要添加0b前缀;要表达一个八进制整数只需要添加0o前缀;要表达一个十六进制的整数字面量要添加0x前缀;
注意:这里的0b、0o、0x中的字母必须都是小写;
let decimal = 100
let binary = 0b0110_0100 //二进制
let octal = 0o144 //八进制
let hexadecimal = 0x64 //十六进制
注意:如果一个整数字面量过长,我们可以使用下划线进行分隔,比如上面的常量binary。上面的所有常量的值都是100.
第二节 整数类型
在Swift中,一个整数字面量的默认类型就是Int。Int类型的证书对象能表示的数值范围会随着不同的处理器与操作系统环境而有所不同,我们可以通过Int的min和max来表示她的最小值与最大值。
let min = Int.min
let max = Int.max
print("min = \(min),max = \(max)")
int类型是带符号的,他所对应的无符号整形就是UInt,Uint类型的整数对象的也会随着不同的处理器与操作系统环境而有所不同,此外,UInt我们也可以通过Int的min和max来表示她的最小值与最大值。
let a : UInt = 0xffff_ffff_ffff_ffff
let UIntMin = UInt.min
let UIntMax = UInt.max
print("UIntMin = \(UIntMin),UIntMax = \(UIntMax)")
除了Int与UInt之外,Swift还提供了其他所有系统中固定位宽的整数类型,包括Int8(带符号8位整型)、 UInt8(无符号8位整型)、 Int16(带符号16位整型)、 UInt16(无符号16位整型)、 Int32(带符号32位整型)、 UInt32(无符号32位整型)、 Int64(带符号64位整型)、 UInt64(无符号64位整型)。这些整数类型通过数字后缀就能知道其位宽了,并且它们都具有 min 与 max 成员,我们可以用来分别获取相关类型可表达的最小值与最大值。
由于Swift编程语言是强类型、注重安全的编程语言,因此如果我们给某一整数对象赋值时,所使用的整数字面量超出了该整型对象所能表示的范围,那么编译即会报错。
//声明一个Int8类型的8位带符号整型变量b
var b :Int8 = 127
//下面这条语句会报错
b += 128 //由于128超过的Int8可表示的范围
//下面这条语句运行时会发生异常
b += 127 //127 + 127超过的Int8可表示的范围
第三节 浮点数字面量
Swift中常用的浮点数字面量就是十进制浮点数的表示,除此之外,Swift还支持十进制浮点数的科学计数法以及十六进制浮点数的科学计数法
Swift的十进制浮点数科学技术法这么表示:一个是兼职整数或十进制浮点数作为底数,后面跟e或E,然后在跟一个十进制整数作为指数;
Swift的十六进制浮点数科学记数法这么表示:以0x作为前缀,后面紧跟十六进制浮点数,后面再跟p或P,后面再紧跟一个十进制整数
十六进制浮点数的小数部分计算方法:从小数点开始,从左到右依次以16n作为除数,当前的十六进制小数位作为被除数做除法计算
//eg:
//0x3.842的值就是:3 + 8 / 16的1次方 + 4 / 16的2次方 + 2 / 16的3次方 = 3.51611328125
第四节 浮点数类型
Swift中常用的浮点类型有32位单精度浮点型Float,以及64位双精度浮点型Double,浮点型的字面量默认类型位Double,如果我们要声明一个Float类型的浮点数类型,并且要用浮点数字面亮对它初始化,那么我们不需使用类型标注的方式显示对它指明类型
let π = 3.1415926 //声明一个Double类型常量π
let e : Float = 2.7182818 //声明一个Float类型常量e
第五讲 布尔类型
布尔类型相对比较简单。Swift编程语言原生支持布尔类型,这一点与C、Objective-C和C++有所不同,它们都是直接将非零作为真,零作为假,而且布尔类型直接被整型给模糊化了。但在Swift中布尔类型与整数类型是完全分离的,直接用 Bool 来表示。
布尔类型的字面量也就两个,真用 true 表示;假用 false 表示。这两者都属于Swift中的关键字。布尔类型一般用于比较操作表达式,作为条件语句、循环语句的判别。当然,我们也可以自己定义一些函数来返回布尔类型,比如一个搜索函数,用 true 表示搜索到相关目标,用 false 表示没有搜索到相关目标。此外,Swift中的比较操作符的计算结构均返回布尔类型。
// 声明一个布尔常量t为真
let t = true
// 声明一个布尔常量f为假
let f = false
// 布尔类型对象可用于逻辑操作,
print("t && f = \(t && f)") // 这里输出false
// 关系操作符的计算结果返回一个布尔值。
print("1 > 0? \(1 > 0)") // 这里输出true