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

  • Louis
  • 更新于 2024-06-24 15:28
  • 阅读 520

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

基本概念

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

1. 整数类型 (Integer Types)

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

特点

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

示例代码

fn main() {
    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位双精度浮点数(默认)

示例代码

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

3. 布尔类型 (Boolean Type)

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

特点

  • 只有两个值:truefalse

示例代码

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 类型只能是 truefalse,不需要推断。

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
  • 布尔类型和字符类型根据字面量直接推断为 boolchar,无需额外推断。
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Louis
Louis
web3 developer,技术交流或者有工作机会可加VX: magicalLouis