Sitelet https://github.com/MagicalBridge/Blog/issues/71
Skip to content

Rust入门系列:06、Rust中的数据类型之:标量类型 #71

Description

@MagicalBridge

基本概念

Rust语言中的标量类型主要包括四类:整数类型、浮点数类型、布尔类型和字符类型。每种类型都有其特定的特点和用途。下面是每种标量类型的详细解释和示例代码:

1. 整数类型 (Integer Types)

整数类型表示没有小数部分的数字。Rust 支持多种整数类型,每种类型的存储大小不同。整数类型分为有符号和无符号两种。有符号整数(如i32)可以表示正数、负数和零,而无符号整数(如u32)只能表示非负数。

特点

  • 有符号整数类型:i8, i16, i32, i64, i128, isize
  • 无符号整数类型:u8, u16, u32, u64, u128, usize
  • isize 和 usize 是根据平台的不同(32位或64位)来确定其位宽的。

示例代码

fn main() {
    let x: i32 = -42; // 有符号32位整数
    let y: u32 = 42;  // 无符号32位整数
    println!("x = {}, y = {}", x, y);
}

2. 浮点数类型 (Floating-Point Types)

浮点数类型表示具有小数部分的数字。Rust 支持两种浮点数类型:f32 和 f64。它们分别对应 32 位和 64 位的 IEEE-754 标准。

特点

  • f32: 32位单精度浮点数
  • f64: 64位双精度浮点数(默认)

示例代码

fn main() {
    let x: f32 = 3.14; // 32位浮点数
    let y: f64 = 2.718281828459045; // 64位浮点数
    println!("x = {}, y = {}", x, y);
}

3. 布尔类型 (Boolean Type)

布尔类型表示真或假的值。布尔类型在Rust中用bool表示,值为true或false。

特点

  • 只有两个值:true 和 false

示例代码

fn main() {
    let is_rust_fun: bool = true;
    let is_rust_hard: bool = false;
    println!("Is Rust fun? {}", is_rust_fun);
    println!("Is Rust hard? {}", is_rust_hard);
}

4. 字符类型 (Character Type)

字符类型表示单个 Unicode 字符,在 Rust 中用 char 表示,占用 4 个字节,可以表示所有的 Unicode 值。

特点

  • 占用 4 个字节(32 位)
  • 可以表示所有的 Unicode 字符

示例代码

fn main() {
    let c1: char = 'A';
    let c2: char = '中';
    let c3: char = '🚀';
    println!("c1 = {}, c2 = {}, c3 = {}", c1, c2, c3);
}

Rust中的默认类型选择

在 Rust 中,当不显式指定类型时,编译器会根据上下文和默认规则来推断标量类型。以下是 Rust 对各种标量类型的默认选择:

1. 整数类型

对于整数类型,Rust 默认选择 i32(32 位有符号整数)。这是因为 i32 在大多数情况下提供了足够的范围和性能。

fn main() {
    let x = 42; // x 被推断为 i32
    println!("x = {}", x);
}

在上面的代码中,x 默认被推断为 i32 类型。

2. 浮点数类型

对于浮点数类型,Rust 默认选择 f64(64 位双精度浮点数)。这是因为 f64 提供了更高的精度和更广泛的范围,适用于大多数场景。

fn main() {
    let y = 3.14; // y 被推断为 f64
    println!("y = {}", y);
}

在上面的代码中,y 默认被推断为 f64 类型。

3. 布尔类型

布尔类型没有默认的推断类型,因为 bool 类型只能是 true 或 false,不需要推断。

fn main() {
    let is_rust_fun = true; // is_rust_fun 被推断为 bool
    println!("Is Rust fun? {}", is_rust_fun);
}

在上面的代码中,is_rust_fun 被推断为 bool 类型。

4. 字符类型

字符类型 char 也没有默认的推断类型,因为 char 类型的字面量(例如 'A')只能表示 char 类型。

fn main() {
    let c = 'A'; // c 被推断为 char
    println!("c = {}", c);
}

在上面的代码中,c 被推断为 char 类型。

总结

当不显式指定类型时,Rust 会根据上下文和默认规则推断类型:

  • 整数类型默认 i32
  • 浮点数类型默认 f64
  • 布尔类型和字符类型根据字面量直接推断为 bool 和 char,无需额外推断。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions