仓颉编程快速上手
上QQ阅读APP看书,第一时间看更新

3.1.1 认识整数类型

仓颉的整数类型分为两种:有符号(signed)整数类型和无符号(unsigned)整数类型,如表3-1所示。

表3-1 仓颉的整数类型

图片表格

有符号整数类型包括5种:Int8、Int16、Int32、Int64和IntNative。所有类型名称均以Int开头,后面所接的数字表示存储一个该类型的数据所需要的二进制位数。IntNative表示存储时需要的二进制位数与平台相关。同样,无符号整数类型也包括5种,不过所有类型名称均以UInt开头。

提示

“Int”是单词“integer”的前3个字符,integer的意思是“整数”。UInt中的“U”是单词“unsigned”的第1个字符,表示“无符号的”。

1.在赋值时避免发生溢出错误

由表3-1可知,不同的整数类型能够表示的整数范围是不同的。例如,从理论上说,8位二进制应该能够表示28(256)个不同的整数,而同样是使用8位二进制存储整数,Int8类型的表示范围为−128~127,UInt8类型的表示范围为0~255。这是因为,对于一个Int8类型的有符号整数,其最高位是符号位,表示正负号,真正用于表示数值大小的只有7位,所以其表示范围为−27~−1、0、1~27−1。对于一个UInt8类型的无符号整数,由于没有符号位,因此其表示范围为0、1~28−1。

在给整数类型变量赋值时,要避免发生溢出错误。举例如下:

main() {
    var x: Int8
x = 128  // 溢出错误:128超出了Int8类型的表示范围
}

在以上示例中,由于x是Int8类型的变量,而Int8类型的表示范围为-128~127,因此,将超出Int8类型表示范围的字面量128赋给x时溢出了。

2.整数类型字面量的后缀

在使用整数类型字面量时,可以给字面量后面加上类型后缀,以明确整数字面量的类型。整数类型与类型后缀的对应关系如表3-2所示。

表3-2 整数类型与类型后缀的对应关系

图片表格

以下是一些使用了类型后缀的整数类型字面量:

18i8  // Int8类型的字面量18
2023u16  // UInt16类型的字面量2023
30000i32  // Int32类型的字面量30000

提示

为了提高整数类型字面量的可读性,可以使用下画线(_)作为分隔符。例如,字面量10000000000可以写作10_000_000_000,也可以写作100_0000_0000。