前言:
在 Rust 中,每一个值都具有明确的类型。在这些类型中,分为:标量(scalar) 和 复合(compound) 两大类。
一、标量
标量 代表一个单独的值,诸如 bool
的 True 、i32
的 3 。Rust 有四种基本的标量类型:整型、浮点型、布尔类型 和 字符类型。
1、整型
以下是为整型的类型表格
长度 | 有符号 | 无符号 |
---|---|---|
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32 | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch | isize | usize |
arch 应该有弹性的意思
值得注意的是:isize
和 usize
类型的长度取决于运行程序的计算机架构。64 位架构上它们是 64 位的, 32 位架构上它们是 32 位的。
在许多语言中,都允许采用其它形式来表示数字。这在 Rust 中也不例外:
数字字面值 | 例子 |
---|---|
Decimal(十进制) | 98_222 |
Hex(十六进制) | 0xff |
Octal (八进制) | 0o77 |
Binary(二进制) | 0b1111_0000 |
Byte (仅适用于 u8 ) |
b'A' |
符号_
在数字中并无意义,只是为了方便阅读。
Rust 的整数默认是 i32
类型,(在 64 位系统也一样)。isize
或 usize
主要作为某些集合的索引。
2、浮点型
Rust 有两个原生的 浮点数(floating-point numbers) 类型,它们用来表示具有小数点的数字(如 3.14 )。Rust 的浮点数类型是 f32
和 f64
,长度分别为 32 位和 64 位。但一个具有小数的数字的默认类型是 f64
,因为在现代 CPU 中,计算它与 f32
的速度几乎一样,但具有更高的精度。
目前这些数字类型都支持基本的数学运算:加法、减法、乘法、除法 和 取余 。进行这些数学运算的表达方式与其它语言相似:
fn main() {
//如果数字为 1 ,将报错:mismatched types
//类型不匹配的原因是 1 的默认类型为 i32
let number:f64 = 1.0;
// number 之前是不可变变量,这里利用 Rust 的 重影
//乘以 9.0 (同样,9 的话将报错)
let mut number = number * 9.0;
//等价于 number = number / 2.0;
number /= 2.0;
//加、减法
number -<