「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。
Rust 数据类型-标量类型
Rust是静态编译语言,在编译的时候要明确变量的类型 一般情况下, 编译器能够推导出变量的具体类型,不用特殊声明,但有时候类型复杂,数据转换的情况下需要明确
数字类型
整数类型
整数顾名思义没有小数部分 整数分为有符号( 到 ) ,和无符号 0到
| 有符号 | 无符号 | 占用空间(bit) |
|---|---|---|
| i8 | u8 | 8 |
| i16 | u16 | 16 |
| i32 | u32 | 32 |
| i64 | u64 | 64 |
| i128 | u128 | 128 |
| arch | isize | usize |
| isize和usize 根据才做运行的计算决定 |
一定选择合适的数字类型
fn main() {
let a: u8 = 257;
println!("{}", a);
}
浮点类型
在Rust中浮点类型有两种 f32 单精度 和 f64 双精度 采用 IEEE-754(js也是采用的这个标准哟)
单精度浮点数占用4个字节(32位)存储空间来存储一个浮点数,包括符号位1位,阶码8位,尾数23位。 而双精度浮点数使用 8个字节(64位)存储空间来存储一个浮点数,包括符号位1位,阶码11位,尾数52位。
在rust 默认的浮点类型是f64,精度更高,不容易出错,对比f32性能差距可以忽略不计
布尔类型
同js一样, 两个值 true 和 false 占用一个字节
fn main() {
let a = true;
let t = false;
}
字符类型
char最基础的单个字符
- 单引号定义
- 占用4个字节
- 是Unicode,常见的中文,emoji表情都可以 范围在U+OOOO 到 U+D7FF and U+E000到 U+10FFFF
fn main() {
let x = 'z';
let y = '你';
}
复合类型
复合类型顾名思义,多个值放在同一个类型里面 rust中最最最基础的 元组和数组
元组
- 可以是把多个类型多个值放在一起
- 长度在声明时确定,一旦确定,不能修改 声明和使用
fn main() {
let t: (i32, i8, u64) = (50, 50, 50);
let (x, y, z) = t; //也可以使用下标t.0,t.1,t.2
}
数组
- 可以把同一类型的多个值放在一个类型里
- 长度固定不可修改
fn main() {
let a: [i32; 5] = [1, 2, 3, 4, 5];
let b = [1; 5]; //相当于[1,1,1,1,1]
a[0] //使用下标
}