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 ~ 255
Int8 range: -128 127
UInt range: 0 18446744073709551615
UInt64 range: 0 18446744073709551615
Int64 range: -9223372036854775808 9223372036854775807
Int range: -9223372036854775808 ~ 9223372036854775807
上述代码是通过整数的min
和max
属性计算各个类型的范围。min
属性获得当前整数的最小值,max
属性获得当前整数的最大值。由于程序运行的电脑是64位的,UInt
运行的结果与UInt64
相同,Int
运行的结果与Int64
相同。
我们在前面的学习过程中声明过变量,有时明确指定数据类型,有时则没有指定,例如下面的代码:
var ageForStudent = 30
var scoreForStudent:Int = 90
变量ageForStudent
没有指定任何数据类型,但是我把30
赋值给它,30
表示Int
类型30
,因此ageForStudent
类型就被确定为Int
,这就是Swift提供的类型推断功能。此后我们就不能把非Int
数值赋值给ageForStudent
。如下代码是有编译错误的:
var ageForStudent = 30
ageForStudent = "20"
代码ageForStudent = "20"
会发生编译错误,这是因为我们试图将20
字符串赋值给Int
类型的ageForStudent
变量。