走进 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扫描下方二维码关注公众号和小程序↓↓↓