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