基本操作

在本课中,我们将学习对原始类型整数和布尔值的基本操作。

本课内容参考自 Move Book 中的整数布尔值章节。

1. 整数

1.1 算术运算

Move 支持整数之间的 +-*/% 运算。以下是一些限制:

  • 两边必须是相同类型。
  • 运算结果不能超出当前类型范围,既不能低于最小值 0(我们只有无符号整数),也不能超过最大值。
  • 不能除以零。
语法操作中止条件
+加法结果对于整数类型来说太大
-减法结果小于零
*乘法结果对于整数类型来说太大
/取整除法除数为 0
%模除法除数为 0

1.2 按位运算

语法操作描述
&按位与对每个位执行布尔与操作
按位或
^按位异或对每个位执行布尔异或操作

1.3 位移运算

如果要移位的位数等于或超过相应无符号整数类型(u8u16u32u64u128u256)的位宽,位移可能会导致中止。

语法操作中止条件
<<左移要移位的位数大于整数类型的大小
>>右移要移位的位数大于整数类型的大小

1.4 比较运算

语法操作
==等于
!=不等于
<小于
>大于
<=小于等于
>=大于等于

1.5 类型转换

一种大小的整数类型可以转换为另一种大小。转换仅限于整数类型,必须强调的是,转换不涉及截断。如果结果超过目标类型的容量,转换操作将导致中止。

// 转换为更大类型
let a: u8 = 8;
let b: u16 = (a as u16);
let c = 100u32 + (a as u32);

2. 布尔值

2.1 逻辑运算

语法描述等价表达式
&&短路逻辑与p && q 等价于 if (p) q else false
!逻辑非!p 等价于 if (p) false else true