在Rust中,带有后缀的数字字面量(例如0u8)是什么意思?

24

我正在阅读《Rust编程语言》,遇到了这个符号:0u8

let some_u8_value = 0u8;
match some_u8_value {
    1 => println!("one"),
    3 => println!("three"),
    5 => println!("five"),
    7 => println!("seven"),
    _ => (),
}
在搜索了网络后,我发现有很多使用这种记法的例子(0b01001100u80x82u8200u8),但这种记法到底是什么意思呢?
1个回答

41

带有后缀的字面量

在搜索之后,我在同一本书中找到了以下解释:

除了字节字面量以外的所有数字字面量都允许使用类型后缀,例如57u8...

所以0u8表示无符号8位整数的数字0。

这些被称为“带有后缀的字面量”,并且在Rust By Example中有详细讨论。


1
Primitives的文档 https://doc.rust-lang.org/rust-by-example/primitives.html 应该提供一个链接到Literals(在上面的By Example链接)。此外,该页面..https://doc.rust-lang.org/rust-by-example/types/literals.html#literals - 需要进行一些重新设计 - 示例有所减弱。顶部的行足以传达信息。这使得扫描更容易。整个字节/内存大小的概念是完全不同的概念,会让人感到困惑。如果真的需要偏离概念,asserts会更有意义。 - JGFMK
我在文档中看到了这行代码,立刻想知道“字节文字”和“u8”(无符号8位整数)之间有什么区别。 - hippietrail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接