面试题答案
一键面试在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
类型能够表示的最大值(因为底层的二进制表示相同,但解释方式不同),这就造成了数据丢失,丢失了原有的负号和真实数值含义。