走进 Rust:数据类型
Rust About 2,583 wordsScalar Types
标量类型。Rust有4个主要的标量类型:integers(整数类型)、floating-point numbers(浮点数类型)、Booleans(布尔类型)、characters(字符类型)。
Integer
Signed数值范围:-2n - 1 到 2n - 1 - 1,n是bit的值。如i8可以存储的值范围是:-27 到 27 - 1 等于 -128 到 127。
Unsigned数值范围:0 到 2n - 1。如u8可以存储的值范围是:0 到 28 - 1 等于 0 到 255。
isize和usize类型取决于程序运行的操作系统:32位系统是32bits,64位系统是64bits。
| Length | Signed | Unsigned |
|---|---|---|
| 8-bit | i8 | u8 |
| 16-bit | i16 | u16 |
| 32-bit | i32 | u32 |
| 64-bit | i64 | u64 |
| 128-bit | i128 | u128 |
| arch | isize | usize |
除了字节类型,数值后可以加类型后缀,比如:57u8,表示u8类型的数值57。_下划线可以帮助快速识别数字,比如:1_000,代表1000,_只是方便观察。
| Number literals | Example |
|---|---|
| Decimal | 98_222 |
| Hex | 0xff |
| Octal | 0o77 |
| Binary | 0b1111_0000 |
| Byte (u8 only) | b'A' |
如果不确定哪种类型的integer,Rust推荐使用i32,即使是在64位操作系统上,这个类型更快。
isize和usize类型的使用场景是:对一些集合进行索引时。
Floating-Point
Rust有两种原子类型的浮点数,f32和f64,分别占用32比特和64比特的空间大小。默认的浮点数类型是f64,因为在现代的CPU中f64在速度上与f32相差无几,但f64精度更高。
示例:加减乘除模。
fn main() {
// 加
// 15
let sum = 5 + 10;
println!("sum={}", sum);
// 减
// 91.2
let difference = 95.5 - 4.3;
println!("difference={}", difference);
// 乘
// 120
let product = 4 * 30;
println!("product={}", product);
// 除
// 1.7608695652173911
let quotient = 56.7 / 32.2;
println!("quotient={}", quotient);
// 模
// 3
let remainder = 43 % 5;
println!("remainder={}", remainder);
}
Boolean
bool布尔类型主要作用是做流程控制,如if表达式。占用1个字节的空间大小。1字节=8比特。
fn main() {
let t = true;
let f: bool = false; // 明确指定类型
}
Character
char字符类型是Rust中最原始字母类型,使用单引号指定。表示重音字母、中日韩的字符、emoji表情和零宽度空格。占用4个字节空间大小。
fn main() {
let c = 'z';
let z = 'ℤ';
let heart_eyed_cat = '😻';
println!("c={}", c);
println!("z={}", z);
println!("heart_eyed_cat={}", heart_eyed_cat);
}
Compound Types
复合类型是组合了多个值后的一种类型,Rust有两种原始的符合类型:元组和数组。
Tuple
元组类型。可存储不同类型值的集合。固定长度,一旦声明,大小将不能扩容和缩减。使用(x, y, z)可接收元组类型,或使用元组变量.角标索引获得元组对应索引的值。
fn main() {
let tup = (500, 6.4, 1);
let (x, y, z) = tup;
// x=500, y= 6.4, z=1
println!("x={}, y= {}, z={}", x, y, z);
let x: (i32, f64, u8) = (500, 6.4, 1);
let index1 = x.0;
let index2 = x.1;
let index3 = x.2;
// index1=500, index2= 6.4, index3=1
println!("index1={}, index2= {}, index3={}", index1, index2, index3);
}
Array
数组类型。只能存储相同类型值得集合。固定长度。使用数组[index]获取对应角标的值。let b = [3;5]表示:数组b初始化为5个3,;号方式简洁化的初始方式。
fn main() {
let months = ["January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"];
let a: [i32; 5] = [1, 2, 3, 4, 5];
let first = a[0];
let second = a[1];
// 等价于 let a = [3, 3, 3, 3, 3];
let b = [3; 5];
}
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓