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位平台,IntInt32宽度一致 在64位平台,IntInt64宽度一致
UInt8 无符号8位整型
UInt16 无符号16位整型
UInt32 无符号32位整型
UInt64 无符号64位整型
UInt 平台相关无符号整型 在32位平台,UIntUInt32宽度一致 在64位平台,UIntUInt64宽度一致

除非要求固定宽的整型,否则一般我们只使用IntUInt,这些类型能够与平台保持一致。

下面我们来看一个整型示例:

  1. println("UInt8 range: \(UInt8.min) ~ \(UInt8.max)")
  2. println("Int8 range: \(Int8.min) \(Int8.max)")
  3. println("UInt range: \(UInt.min) \(UInt.max)")
  4. println("UInt64 range: \(UInt64.min) \(UInt64.max)")
  5. println("Int64 range: \(Int64.min) \(Int64.max)")
  6. println("Int range: \(Int.min) ~ \(Int.max)")

输出结果如下:

  1. UInt8 range: 0 ~ 255
  2. Int8 range: -128 127
  3. UInt range: 0 18446744073709551615
  4. UInt64 range: 0 18446744073709551615
  5. Int64 range: -9223372036854775808 9223372036854775807
  6. Int range: -9223372036854775808 ~ 9223372036854775807

上述代码是通过整数的minmax属性计算各个类型的范围。min属性获得当前整数的最小值,max属性获得当前整数的最大值。由于程序运行的电脑是64位的,UInt运行的结果与UInt64相同,Int运行的结果与Int64相同。

我们在前面的学习过程中声明过变量,有时明确指定数据类型,有时则没有指定,例如下面的代码:

  1. var ageForStudent = 30
  2. var scoreForStudent:Int = 90

变量ageForStudent没有指定任何数据类型,但是我把30赋值给它,30表示Int类型30,因此ageForStudent类型就被确定为Int,这就是Swift提供的类型推断功能。此后我们就不能把非Int数值赋值给ageForStudent。如下代码是有编译错误的:

  1. var ageForStudent = 30
  2. ageForStudent = "20"

代码ageForStudent = "20"会发生编译错误,这是因为我们试图将20字符串赋值给Int类型的ageForStudent变量。