🦀 Rust 基本数据类型快问快答

测试你对 Rust 基本数据类型和固定宽度数据类型的理解

10
题目数量
15
预计时间(分钟)
⭐⭐
难度等级
第1题 (判断题)
在Rust中,i32和u32都是32位整数类型,它们可以存储相同范围的数值。
正确
错误

答案解析:

答案:错误

i32是有符号32位整数,范围是-2,147,483,648到2,147,483,647。

u32是无符号32位整数,范围是0到4,294,967,295。

虽然都是32位,但存储的数值范围不同。

第2题 (选择题)
下列哪个不是Rust的基本整数类型?
i8
u64
i24
i128

答案解析:

答案:i24

Rust的基本整数类型包括:i8, i16, i32, i64, i128, isize和u8, u16, u32, u64, u128, usize。

没有i24这种类型,Rust只提供2的幂次方位数的整数类型。

第3题 (选择题)
在64位系统上,usize类型的大小是多少?
32位
64位
128位
取决于编译器

答案解析:

答案:64位

usize和isize的大小取决于目标架构的指针大小。

在64位系统上是64位,在32位系统上是32位。

它们主要用于数组索引和内存地址相关操作。

第4题 (判断题)
Rust中的char类型是8位的,可以存储ASCII字符。
正确
错误

答案解析:

答案:错误

Rust中的char类型是32位的Unicode标量值,不是8位。

它可以存储任何Unicode字符,包括emoji、中文等。

如果只需要存储ASCII字符,可以使用u8类型。

第5题 (选择题)
下面哪个代码会导致编译错误?
A: let x: u8 = 255; B: let y: u8 = 256; C: let z: i8 = -128; D: let w: i8 = 127;
A
B
C
D

答案解析:

答案:B

u8类型的范围是0到255,256超出了这个范围。

A: 255是u8的最大值,合法。

C: -128是i8的最小值,合法。

D: 127是i8的最大值,合法。

第6题 (简答题)
Rust中有哪两种浮点数类型?请写出它们的名称。

答案解析:

答案:f32, f64

f32是32位单精度浮点数,符合IEEE-754标准。

f64是64位双精度浮点数,也符合IEEE-754标准。

默认的浮点数类型是f64,因为现代CPU上f64和f32的性能差不多,但f64精度更高。

第7题 (选择题)
在Rust中,布尔类型bool占用多少字节的内存?
1字节
2字节
4字节
8字节

答案解析:

答案:1字节

虽然bool只需要1位来存储true/false,但由于内存对齐的原因,它占用1字节。

bool类型只有两个值:true和false。

可以使用std::mem::size_of::()来验证其大小。

第8题 (判断题)
在Rust中,数组的长度必须在编译时确定,不能在运行时动态改变。
正确
错误

答案解析:

答案:正确

Rust中的数组(array)长度是类型的一部分,必须在编译时确定。

例如:[i32; 5]和[i32; 10]是不同的类型。

如果需要动态大小的集合,应该使用Vec

第9题 (选择题)
下面哪个是正确的元组类型声明?
(i32, f64, bool)
[i32, f64, bool]
{i32, f64, bool}
<i32, f64, bool>

答案解析:

答案:(i32, f64, bool)

元组使用圆括号()来定义,可以包含不同类型的元素。

方括号[]用于数组,花括号{}用于结构体,尖括号<>用于泛型。

元组的元素可以通过.0, .1, .2等索引访问。

第10题 (简答题)
i128类型可以存储的最大正整数是多少?(用科学记数法表示,如1.23e10)

答案解析:

答案:约1.7e38

i128的范围是-2^127到2^127-1。

最大值是2^127-1 = 170,141,183,460,469,231,731,687,303,715,884,105,727。

用科学记数法表示约为1.7 × 10^38。

这是一个非常大的数,足以处理大多数需要超大整数的场景。

🎉
恭喜完成测验!
10/10
你对Rust基本数据类型的掌握非常出色!