字面量和运算符 - Rust By Example
Description: Rust by Example (RBE) is a collection of runnable examples that illustrate various Rust concepts and standard libraries.

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# 字面量和运算符

整数 `1`、浮点数 `1.2`、字符 `'a'`、字符串 `"abc"`、布尔值 `true` 和单元类型 `()` 可以用字面值表示。

整数也可以使用十六进制、八进制或二进制表示法，分别使用这些前缀：`0x`、`0o` 或 `0b`。

可以在数字字面值中插入下划线以提高可读性，例如 `1_000` 与 `1000` 相同，`0.000_001` 与 `0.000001` 相同。

Rust 还支持科学计数法 E-notation，例如 `1e6`、`7.6e-4`。相关类型是 `f64`。

我们需要告诉编译器我们使用的字面值的类型。现在，我们将使用 `u32` 后缀来表示该字面值是一个无符号 32 位整数，使用 `i32` 后缀来表示它是一个有符号 32 位整数。

Rust 中可用的运算符及其优先级与其他 类 C 语言 类似。

    fn main() {
        // 整数加法
        println!("1 + 2 = {}", 1u32 + 2);

        // 整数减法
        println!("1 - 2 = {}", 1i32 - 2);
        // TODO ^ 尝试将 `1i32` 改为 `1u32`，看看为什么类型很重要

        // 科学记数法
        println!("1e4 is {}, -2.5e-3 is {}", 1e4, -2.5e-3);

        // 短路布尔逻辑
        println!("true AND false is {}", true && false);
        println!("true OR false is {}", true || false);
        println!("NOT true is {}", !true);

        // 位运算
        println!("0011 AND 0101 is {:04b}", 0b0011u32 & 0b0101);
        println!("0011 OR 0101 is {:04b}", 0b0011u32 | 0b0101);
        println!("0011 XOR 0101 is {:04b}", 0b0011u32 ^ 0b0101);
        println!("1 << 5 is {}", 1u32 << 5);
        println!("0x80 >> 2 is 0x{:x}", 0x80u32 >> 2);

        // 使用下划线来提高可读性！
        println!("One million is written as {}", 1_000_000u32);
    }