整数

整数 属于 Cairo

1 个练习

关于 整数

integer 是没有小数部分的数字。 在 Cairo 中,整数的类型声明指明了程序员可以用来存储该值的位数。

无符号整数只能表示正数和数字 0(零),这在某些编程场景中很有用,例如数组下标和内存管理。

Cairo 也支持有符号整数,它们以i为前缀。 这些整数可以表示正数和负数,大小从i8到i128。 每个有符号变体可以存储从 $-2^{n-1}$ 到 $2^{n-1} - 1$(含两端)的数字,其中 $n$ 是该变体使用的位数。 例如,i8可以存储从 $-2^7$ 到 $2^7 - 1$ 的数字,也就是从 $-128$ 到 $127$。

长度 无符号 有符号
8 位 u8 i8
16 位 u16 i16
32 位 u32 i32
64 位 u64 i64
128 位 u128 i128
256 位 u256 ------

还有一种特殊的整数类型叫usize,它目前只是u32的别名。 将来,一旦 Cairo 可以编译为 MLIR(多级中间表示),这种类型可能会发挥更独特的作用。

Cairo 中的整数字面量

你可以用下表所示的任意形式书写整数字面量。 注意,可以属于多种数字类型的数字字面量允许添加类型后缀,例如57_u8,用来指定类型。 也可以为数字字面量使用可视分隔符_,以提高代码可读性。

数字字面量 示例
十进制 98222
十六进制 0xff
八进制 0o04321
二进制 0b01

那么,怎么知道该用哪种整数类型? 试着估算你的整数可能达到的最大值,然后选择合适的大小。 你使用usize的主要场景是对某种集合进行下标访问时。

数值运算

Cairo 支持所有整数类型都有的基本数学运算:加法、减法、乘法、除法和求余。 整数除法会向零截断到最接近的整数。 以下代码展示了如何在let语句中使用每种数值运算:

fn main() {
    // addition
    let sum = 5_u128 + 10_u128;

    // subtraction
    let difference = 95_u128 - 4_u128;

    // multiplication
    let product = 4_u128 * 30_u128;

    // division
    let quotient = 56_u128 / 32_u128; // result is 1
    let quotient = 64_u128 / 32_u128; // result is 2

    // remainder
    let remainder = 43_u128 % 5_u128; // result is 3
}

这些语句中的每个表达式都使用一个数学运算符并求值为单个值,然后绑定到一个变量。

你可以在 The Cairo Book 中找到 Cairo 提供的所有运算符。

通过 GitHub 编辑 该链接会在新窗口或标签页中打开

学习 整数

练习已锁定

再解锁 2 个练习即可练习 整数