char类型

因为 char 类型的设计目的是描述任意一个 unicode 字符,因此它占据的内存空间不是 1 个字节, 而是 4 个字节。 对于 ASCII 字符其实只需占用一个字节的空间,因此 Rust 提供了单字节字符字面量来
表示 ASCII 字符。 我们可以使用一个字母 b 在字符或者字符串前面,代表这个字面量存储在 u8 类型数组中,这样占用空间比 char 型数组要小一些

整型

所谓有符号/无符号,指的是如何理解内存空间中的 bit 表达的含义。 如果一个变量是有 符号类型,那么它的最高位的那一个 bit 就是“符号位”,表示该数为正值还是负值。 如果一 个变量是无符号类型,那么它的最高位和其他位一样,表示该数的大小。 比如对于一个 byte 大小( 8 bits)的数据来说,如果存的是无符号数,那么它的表达范围是 0 ~ 255 ,如果存的 是有符号数,那么它的表达范围是一128 ~ 127 。

Rust 原生支持了从 8 位到 128 位的整数。 需要特别关注的是 isize 和 usize 类型。 它们占据的空间是不 定的,与指针占据的空间一致,与所在的平台相关。 如果是 32 位系统上,则是 32 位大小; 如果是 64 位系统上,则是 64 位大小。 在 C++中与它们相对应的类似类型是 int ptr 和 uint ptr 。

Rust 的这一策略与 C 语言不同, C 语言标准中对许多类型的大小并没有做强制 规定,比如 int 、 long 、 double 等类型,在不同平台上都可能是不同的大小,这给许多程 序员带来了不必要的麻烦。 相反,在语言标准中规定好各个类型的大小,让编译器针对不同 平台做适配,生成不同的代码,是更合理的选择。

let varl : i32 = 32;// 十进制表示

// BOX b o x 分别代表二进制,八进制,十六进制
let var4 : i32 = OblOOl; // 以 Ob 开头代表二进制表示
let var3 : i32 = OoSS; // 以 Oo 开头代表八进制表示
let var2 : i32 = OxFF; // 以 Ox 开头代表十六进制表示

let var6 = 123usize; // var6 变量是 usize 类型
let var7 = Ox_ff_uB; // var7 变量是 uB 类型
let vars = 32; // 不写类型 , 默认为 i32 类型