1 整数类型

整数就是没有小数部分的数字。


整数类型分为两种:

(1)有符号整数类型:表示负整数、零、和正整数

(2)无符号整数类型:表示零、和正整数


有符号整数类型有5种表示方式:

(1)Int8:在内存中占8位,表示的范围是:-128~127

(2)Int16:在内存中占16位,表示的范围是:-32768~32767

(3)Int32:在内存中占32位,表示的范围是:-2147483648~2147483647

(4)Int64:在内存中占64位,表示的范围是:-9223372036854775808~9223372036854775807

(5)Int:在32位系统中,Int = Int32;在64位系统中,Int = Int64。

     除了内存优化、性能调优等以外,推荐总是使用Int表示有符号整数类型,

     可提高代码的一致性和可复用性。

※第一位是符号位

let int8min:Int8 = Int8.min //-128
let int8max:Int8 = Int8.max //127

let int16min:Int16 = Int16.min //-32768
let int16max:Int16 = Int16.max //32767

let int32min:Int32 = Int32.min //-2147483648
let int32max:Int32 = Int32.max //2147483647

let int64min:Int64 = Int64.min //-9223372036854775808
let int64max:Int64 = Int64.max //9223372036854775807

let intmin:Int = Int.min //-9223372036854775808
let intmax:Int = Int.max //9223372036854775807


无符号整数类型有5种表示方式:

(1)UInt8:在内存中占8位,表示的范围是:0~255

(2)UInt16:在内存中占16位,表示的范围是:0~65535

(3)UInt32:在内存中占32位,表示的范围是:0~4294967295

(4)UInt64:在内存中占64位,表示的范围是:0~18446744073709551615

(5)UInt:在32位系统中,UInt = UInt32;在64位系统中,UInt = UInt64。

     即使知道被存储的数值是非负的,也推荐使用Int而不是UInt,

     以提高代码的一致性和可复用性。

※没有符号位

let uint8min:UInt8 = UInt8.min //0
let uint8max:UInt8 = UInt8.max //255

let uint16min:UInt16 = UInt16.min //0
let uint16max:UInt16 = UInt16.max //65535

let uint32min:UInt32 = UInt32.min //0
let uint32max:UInt32 = UInt32.max //4294967295

let uint64min:UInt64 = UInt64.min //0
let uint64max:UInt64 = UInt64.max //18446744073709551615

let uintmin:UInt = UInt.min //0
let uintmax:UInt = UInt.max //18446744073709551615


可访问不同整数类型的min和max属性来获取对应类型的最小值和最大值。


如果声明并初始化变量或常量时没有指定数据类型,系统默认推断为Int类型。

//var tmpInt8:Int8 = 128 //error Integer literal 128 overflows when stored into Int8
//var tmpInt8:Int8 = -129 //error Integer literal -129 overflows when stored into Int8
var tmpInt8:Int8 = 127
//tmpInt8 = tmpInt8 + 1 //error

var tmpint = 30 //Int


整数类型的字面值有4种表示方式:

(1)十进制:默认的进制

(2)二进制:以0b开头

(3)八进制:以0o开头

(4)十六进制:以0x开头

※不能使用大写的字母:B、O、X

var tmpbinary = 0b11011 //27
//var tmpbinary2 = 0B1101 //error

var tmpocx = 0o23 //19
//var tmpocx2 = 0O23 //

var tmphex = 0x459F //17823
//var tmphex2 = 0X459f //error


可以给整数类型的字面值添加若干个0或_,以提高可读性。

let int64maxconstant:Int64 = 0922_3372_0368_5477_5807
let Uint64maxconstant:UInt64 = 18446_74407_37095_51615


如将两个不同整数类型的变量或常量进行运算,必须进行显式的类型转换。

var tmpint8:Int8 = 12
var tmpint16:Int16 = 30

//tmpint8 = tmpint16 //error Cannot assign value of type Int16 to type Int8
tmpint8 = Int8(tmpint16) //30
//tmpint16 = tmpint8
tmpint8 = 40
tmpint16 = Int16(tmpint8) //40

//tmpint8 + tmpint16 //error
tmpint8 + Int8(tmpint16) //80
Int16(tmpint8) + tmpint16 //80

var result = tmpint8 + Int8(tmpint16) //Int8
//var result:Int16 = tmpint8 + Int8(tmpint16) //error