我读了这个文档并偶然发现了这一行。
let an_integer = 5i32; // Suffix annotation
这是什么意思?我假设它的值是 5,整数类型是 i32。那是对的吗?
对,那是正确的。当您在程序中编写文字时5
,它可以被解释为多种类型。(文字是一个值,例如5
,它直接写入源代码而不是被计算。)如果我们想表达文字是某种类型,我们可以将类型附加(“后缀”)到它使其明确,如5i32
.
这仅适用于某些内置类型,例如整数和浮点数,但在某些情况下它可以派上用场。例如,以下内容无效:
fn main() {
println!("{}", 1 << 32);
}
Run Code Online (Sandbox Code Playgroud)
这是因为如果您根本没有为整数指定任何类型,则它默认为i32
. 由于将 32 位整数移位 32 位是无效的,因此 Rust 会产生错误。
但是,我们可以这样写并且它会起作用:
fn main() {
println!("{}", 1u64 << 32);
}
Run Code Online (Sandbox Code Playgroud)
那是因为现在整数是 au64
并且它在范围内。