5.2 整型
Swift提供8、16、32、64位形式的有符号及无符号整数。这些整数类型遵循C语言的命名规约,如8位无符号整数的类型为UInt8,32位有符号整数的类型为Int32。我们归纳了Swift中的整型,参见表5-1。
表5-1 整型
| 数据类型 | 名称 | 说明 |
|---|---|---|
Int8
| 有符号8位整型 | |
Int16
| 有符号16位整型 | |
Int32
| 有符号32位整型 | |
Int64
| 有符号64位整型 | |
Int
| 平台相关有符号整型 |
在32位平台,Int与Int32宽度一致
在64位平台,Int与Int64宽度一致
|
UInt8
| 无符号8位整型 | |
UInt16
| 无符号16位整型 | |
UInt32
| 无符号32位整型 | |
UInt64
| 无符号64位整型 | |
UInt
| 平台相关无符号整型 |
在32位平台,UInt与UInt32宽度一致
在64位平台,UInt与UInt64宽度一致
|
除非要求固定宽的整型,否则一般我们只使用Int或UInt,这些类型能够与平台保持一致。
下面我们来看一个整型示例:
println("UInt8 range: \(UInt8.min) ~ \(UInt8.max)")println("Int8 range: \(Int8.min) ~ \(Int8.max)")println("UInt range: \(UInt.min) ~ \(UInt.max)")println("UInt64 range: \(UInt64.min) ~ \(UInt64.max)")println("Int64 range: \(Int64.min) ~ \(Int64.max)")println("Int range: \(Int.min) ~ \(Int.max)")
输出结果如下:
UInt8 range: 0 ~ 255Int8 range: -128 ~ 127UInt range: 0 ~ 18446744073709551615UInt64 range: 0 ~ 18446744073709551615Int64 range: -9223372036854775808 ~ 9223372036854775807Int range: -9223372036854775808 ~ 9223372036854775807
上述代码是通过整数的min和max属性计算各个类型的范围。min属性获得当前整数的最小值,max属性获得当前整数的最大值。由于程序运行的电脑是64位的,UInt运行的结果与UInt64相同,Int运行的结果与Int64相同。
我们在前面的学习过程中声明过变量,有时明确指定数据类型,有时则没有指定,例如下面的代码:
var ageForStudent = 30var scoreForStudent:Int = 90
变量ageForStudent没有指定任何数据类型,但是我把30赋值给它,30表示Int类型30,因此ageForStudent类型就被确定为Int,这就是Swift提供的类型推断功能。此后我们就不能把非Int数值赋值给ageForStudent。如下代码是有编译错误的:
var ageForStudent = 30ageForStudent = "20"
代码ageForStudent = "20"会发生编译错误,这是因为我们试图将20字符串赋值给Int类型的ageForStudent变量。
