【发布时间】:2019-01-12 02:35:04
【问题描述】:
main.rs
#![feature(core_intrinsics)]
fn print_type_of<T>(_: &T) {
println!("{}", unsafe { std::intrinsics::type_name::<T>() });
}
fn main() {
let x = 93;
let y = 93.1;
print_type_of(&x);
print_type_of(&y);
}
如果我用“rustc +nightly ./main.rs”编译,我得到这个输出:
$ ./main
i32
f64
我运行 x86_64 Linux 机器。浮点变量默认是双精度的,这很好。 为什么整数只有 4 个字节?我应该使用哪个?如果我不需要 i64,我应该使用 i32 吗? i32 的性能更好吗?
【问题讨论】:
-
是我遗漏了什么还是你混淆了
i64和f64? -
@Stargateur:不,他没有。他指出未修饰的浮点文字的默认类型是 64 位类型,因此想知道为什么未修饰的整数文字的默认类型也不是 64 位。
-
阅读C++ int vs long long in 64 bit machine 会有所帮助。 C++ 增加了可变大小整数的复杂性(在 Rust 中,
usize和isize是唯一具有此属性的类型)。