3. 数据类型

数据类型 学习卡片

任务说明

本案例演示 Rust 中整数、浮点数、布尔、字符四类基本数据类型的声明方式、类型推断与显式标注,以及它们各自支持的典型运算。通过一个可编译运行的示例程序,观察不同类型在运算时的行为差异与约束。

核心代码

fn main() {
    // ---------- 整数类型 ----------
    let a: i32 = -42;          // 有符号 32 位整数
    let b: u64 = 100;          // 无符号 64 位整数
    let sum = a + (b as i32);  // 类型转换:u64 -> i32 后相加
    println!("整数运算: {} + {} = {}", a, b, sum);

    // ---------- 浮点数类型 ----------
    let x: f64 = 3.14159;
    let y: f32 = 2.5;
    let product = x * (y as f64);  // 类型转换:f32 -> f64
    println!("浮点乘法: {} * {} = {:.4}", x, y, product);

    // ---------- 布尔类型 ----------
    let is_rust_fun: bool = true;
    let is_complex = 10 > 5;       // 比较表达式产生 bool
    let and_result = is_rust_fun && is_complex;
    let or_result = is_rust_fun || false;
    println!("布尔运算: {} AND {} = {}", is_rust_fun, is_complex, and_result);
    println!("布尔运算: {} OR false = {}", is_rust_fun, or_result);

    // ---------- 字符类型 ----------
    let letter: char = 'R';
    let emoji: char = '🦀';        // char 为 Unicode 标量值,占 4 字节
    let digit_char: char = '7';
    let digit_value = digit_char.to_digit(10).unwrap();  // char -> u32
    println!("字符: {} 和 {}", letter, emoji);
    println!("字符'{}'转数字: {}", digit_char, digit_value);

    // ---------- 类型大小验证 ----------
    println!("类型大小: i32={}字节, u64={}字节, f64={}字节, f32={}字节, char={}字节",
        std::mem::size_of::<i32>(),
        std::mem::size_of::<u64>(),
        std::mem::size_of::<f64>(),
        std::mem::size_of::<f32>(),
        std::mem::size_of::<char>());
}

代码说明

代码覆盖四类基本数据类型:i32/u64 整数、f64/f32 浮点数、bool 布尔值、char 字符。整数部分演示了有符号与无符号类型间的显式转换(as 关键字);浮点部分演示了不同精度类型间的转换;布尔部分展示逻辑与(&&)和逻辑或(||)运算;字符部分展示 Unicode 字符存储及字符转数字的方法。最后通过 std::mem::size_of 输出各类型在内存中占用的字节数,验证类型宽度。

编译与运行

# 保存为 types.rs,然后执行:
rustc types.rs
./types

预期输出

整数运算: -42 + 100 = 58
浮点乘法: 3.14159 * 2.5 = 7.8540
布尔运算: true AND true = true
布尔运算: true OR false = true
字符: R 和 🦀
字符'7'转数字: 7
类型大小: i32=4字节, u64=8字节, f64=8字节, f32=4字节, char=4字节

验证方法

编译并运行程序,观察输出是否符合上述预期。重点确认:整数加法结果为 58(说明类型转换正确);浮点乘法保留 4 位小数为 7.8540;布尔逻辑结果正确;字符 '7' 成功转为数字 7;类型大小输出与 Rust 标准一致(i32=4 字节,u64=8 字节,f64=8 字节,f32=4 字节,char=4 字节)。若编译无错误且输出与预期逐行一致,则判定案例通过。

Rust 基本数据类型内存布局与运算关系 整数类型 i32: -42 (4B) u64: 100 (8B) as i32 加法结果 -42 + 100 = 58 浮点类型 f64: 3.14159 (8B) f32: 2.5 (4B) as f64 乘法结果 3.14159 × 2.5 ≈ 7.8540 布尔类型 true (1B) 10 > 5 → true 逻辑运算 true AND true = true 字符类型 'R' (4B) '🦀' (4B) to_digit 字符转数字 '7' → 7 整数 浮点 布尔 字符 → 表示类型转换或运算方向