为了账号安全,请及时绑定邮箱和手机立即绑定

跟老卫学仓颉编程语言开发:整数类型

整数类型分为有符号(signed)整数类型和无符号(unsigned)整数类型。

有符号整数类型包括Int8、Int16、Int32、Int64和IntNative,分别用于表示编码长度为8-bit、16-bit、32-bit、64-bit和平台相关大小的有符号整数值的类型。

无符号整数类型包括UInt8、UInt16、UInt32、UInt64和UIntNative,分别用于表示编码长度为8-bit、16-bit、32-bit、64-bit 和平台相关大小的无符号整数值的类型。

程序具体使用哪种整数类型,取决于该程序中需要处理的整数的性质和范围。在Int64类型适合的情况下,首选Int64类型,因为Int64的表示范围足够大,并且整数类型字面量在没有类型上下文的情况下默认推断为Int64类型,可以避免不必要的类型转换。

整数类型字面量

整数类型字面量有4种进制表示形式:二进制(使用0b或0B前缀)、八进制(使用0o或0O前缀)、十进制(没有前缀)、十六进制(使用0x或0X前缀)。例如,对于十进制数24,表示成二进制是0b00011000(或0B00011000),表示成八进制是0o30(或0O30),表示成十六进制是0x18(或0X18)。

在各进制表示中,可以使用下划线“_”充当分隔符的作用,方便识别数值的位数,如0b0001_1000

对于整数类型字面量,如果它的值超出了上下文要求的整数类型的表示范围,编译器将会报错。

let x: Int8 = 128          // 错误!, 128 out of the range of Int8
let y: UInt8 = 256         // 错误!, 256 out of the range of UInt8
let z: Int32 = 0x8000_0000 // 错误!, 0x8000_0000 out of the range of Int32

在使用整数类型字面量时,可以通过加入后缀来明确整数字面量的类型,后缀与类型的对应关系如下表3-1所示。

表3-1 后缀与类型的对应关系

后缀 类型 后缀 类型
i8 Int8 u8 UInt8
i16 Int16 u16 UInt16
i32 Int32 u32 UInt32
i64 Int64 u64 UInt64

加入了后缀的整数字面量可以像下面的方式来使用:

var x = 100i8  // x is 100 with type Int8
var y = 0x10u64 // y is 16 with type UInt64
var z = 0o432i32  // z is 282 with type Int32

字符字节字面量

仓颉编程语言支持字符字节字面量,以方便使用ASCII码表示UInt8类型的值。字符字节字面量由字符b、一对标识首尾的单引号、以及一个ASCII字符组成,例如:

var a = b'x' // a is 120 with type UInt8
var b = b'\n' // b is 10 with type UInt8
var c = b'\u{78}' // c is 120 with type UInt8

b'x'表示类型为UInt8大小是120的字面值。另外还可以通过b'\u{78}'这种转义形式表示类型为UInt8,16进制大小为0x78 或10进制大小为120的字面值。需要注意的是,\u内部最多有两位16进制数,并且值必须小于256(十进制)。

整数类型支持的操作

整数类型默认支持的操作符包括:算术操作符、位操作符、关系操作符、自增和自减操作符、赋值操作符、复合赋值操作符。

算术操作符包括:一元负号(-)、加法(+)、减法(-)、乘法(*)、除法(/)、取模(%)、幂运算(**)。

除了一元负号(-)和幂运算(**),其他操作符要求左右操作数是相同的类型。

*/+-的操作数可以是整数类型或浮点类型。

%的操作数只支持整数类型。

**的左操作数只能为Int64类型或Float64类型,并且:

  • 当左操作数类型为Int64时,右操作数只能为UInt64类型,表达式的类型为Int64。
  • 当左操作数类型为Float64时,右操作数只能为Int64类型或Float64类型,表达式的类型为Float64。

幂运算的使用,见如下示例:

let p1 = 2 ** 3               // p1 = 8
let p2 = 2 ** UInt64(3 ** 2)  // p2 = 512
let p3 = 2.0 ** 3.0           // p3 = 8.0
let p4 = 2.0 ** 3 ** 2        // p4 = 512.0
let p5 = 2.0 ** 3.0           // p5 = 8.0
let p6 = 2.0 ** 3.0 ** 2.0    // p6 = 512.0

位操作符包括:按位求反(!)、左移(<<)、右移(>>)、按位与(&)、按位异或(^)、按位或(|)。注意,按位与、按位异或和按位或操作符要求左右操作数是相同的整数类型。

关系操作符包括:小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、相等(==)、不等(!=)。要求关系操作符的左右操作数是相同的整数类型。

自增和自减操作符包括:自增(++)和自减(--)。注意,仓颉中的自增和自减操作符只能作为一元后缀操作符使用。

赋值操作符即=,复合赋值操作符包括:+=-=*=/=%=**=<<=>>=&=^=|=

整数类型之间、整数类型和浮点类型之间可以互相转换,整数类型可以转换为字符类型。

参考引用

更多仓颉学习资料,详见:

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
1.7万
获赞与收藏
2192

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消