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
  • isizeusize 是根据平台的不同(32位或64位)来确定其位宽的。

示例代码

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

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

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

特点

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

示例代码

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

3. 布尔类型 (Boolean Type)

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

特点

  • 只有两个值:truefalse

示例代码

fnmain(){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 字符

示例代码

fnmain(){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 在大多数情况下提供了足够的范围和性能。

fnmain(){let x = 42;// x 被推断为 i32println!("x = {}", x);}

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

2. 浮点数类型

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

fnmain(){let y = 3.14;// y 被推断为 f64println!("y = {}", y);}

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

3. 布尔类型

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

fnmain(){let is_rust_fun = true;// is_rust_fun 被推断为 boolprintln!("Is Rust fun? {}", is_rust_fun);}

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

4. 字符类型

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

fnmain(){let c = 'A';// c 被推断为 charprintln!("c = {}", c);}

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

总结

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

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

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