赞
踩
目录
Rust中的所有值都是有特定数据类型的,rust是强类型语言,也是静态类型语言(编译器类型必须确定)。
编译器可以根据值来进行类型推断,但对有歧义的,必须指定特定的类型。
例如:
let guess: u32 = "42".parse().expect("Not a number!");
如果不指定guess类型,编译器报错如下:
- # cargo build
- Compiling no_type_annotations v0.1.0 (file:///projects/no_type_annotations)
- error[E0282]: type annotations needed
- --> src/main.rs:2:9
- |
- 2 | let guess = "42".parse().expect("Not a number!");
- | ^^^^^ consider giving `guess` a type
-
- For more information about this error, try `rustc --explain E0282`.
- error: could not compile `no_type_annotations` due to previous error
2.1 标量类型
标量指单值类型,rust有四种主要的标量类型如下:
整型
无小数部分的数字就是整型,rust支持下表的整型类型:
长度 | 有符号 | 无符号 |
8位 | i8 | u8 |
16位 | i16 | u16 |
32位 | i32 | u32 |
64位 | i64 | u64 |
128位 | i128 | u128 |
特定架构 相关 | isize | usize |
每类长度的整型都分为有符号和无符号类型,有符号类型可以是负值。整型在内存中以补码的格式存储。
isize和usize类型的大小依赖于处理器硬件架构,在64位架构上是64位长,在32位架构上是32位长。isize和usize主要应用场景是集合的索引。
Rust编程对整型字面常量的书写方式支持后缀标识类型 ,例如:57u8,表示u8类型的57整型值;支持单下划线_ 用来分割数字,例如:1_000,表示数字1000;支持前缀标识进制 ,例如:0o89,表示8进制数字89。如下表:
Number literals | Example |
Decimal | 98_222 |
Hex | 0xff |
Octal | 0o77 |
Binary | 0b1111_0000 |
Byte (u8 only) | b'A' |
浮点型
Rust有两种浮点类型,f32和f64, 分别是32位和64位,浮点数都是有符号的。单精度的f32和双精度的f64的浮点型,在内存中表示格式都采用IEEE754格式。
- fn main() {
- let x = 2.0; // f64
-
- let y: f32 = 3.0; // f32
- }
boolean类型
如大多数编程语言,Rust boolean类型有true和false 两个值,在存储上,rust使用1个字节。定义如下:
- fn main() {
- let t = true;
-
- let f: bool = false; // with explicit type annotation
- }
字符类型
Rust用单引号指定字符字面量,用双引号指定字符串字面量。
Rust的char类型大小为4个字节, 表示Unicode标量值,可以表示ASCII以及ASCII之外的多种字符。例如:重音字母、中文、日文、韩文,emoji等,都是Rust中的有效字符值。Unicode标量值范围从U+0000到U+D7FF和U+E000到U+10FFFF包括在内。然而,“字符”在Unicode中并不是一个真正的概念,因此您对“字符”的直觉认识可能与Rust中的字符不匹配。我们将在第8章的“使用字符串存储UTF-8编码文本”中详细讨论这个主题。
- fn main() {
- let c = 'z';
- let z = 'ℤ';
- let heart_eyed_cat = '声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/847214推荐阅读
相关标签
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。