MST

星途 面试题库

面试题:Rust中如何进行基本数值类型的显式类型转换

在Rust中,有i32、u32等数值类型。假设有一个i32类型的变量`num`,值为100,现在要将其转换为u32类型,应该如何实现?并说明在什么情况下这种转换可能会导致数据丢失。
31.2万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

在Rust中,可以使用as关键字将i32类型的变量转换为u32类型。示例代码如下:

fn main() {
    let num: i32 = 100;
    let converted_num: u32 = num as u32;
    println!("Converted number: {}", converted_num);
}

可能导致数据丢失的情况: 当i32类型的值为负数时,转换为u32类型会导致数据丢失。因为u32是无符号整数类型,不能表示负数。例如:

fn main() {
    let num: i32 = -1;
    let converted_num: u32 = num as u32;
    println!("Converted number: {}", converted_num);
}

在这个例子中,i32类型的-1转换为u32类型后,得到的是u32类型能够表示的最大值(因为底层的二进制表示相同,但解释方式不同),这就造成了数据丢失,丢失了原有的负号和真实数值含义。