为什么usize::max_value()在64位Windows上返回无符号32位整数的最大值?
附注: 但当我运行一个简单的测试时:为什么usize::max_value()在64位Windows上返回无符号32位整数的最大值?,windows,rust,Windows,Rust,附注: 但当我运行一个简单的测试时: use std::usize; fn main() { println!("{}", usize::max_value()); } 打印号码:4294967295 我的项目只进行了初始化,2行使用std::usize;还有普林顿!{},usize::max_值;补充说,没有其他改变 我的rustc输出-版本-详细: rustc 1.41.1 f3e1a954d 2020-02-24 二进制代码:rustc 提交哈希:f3e1a954d2ead4e
use std::usize;
fn main() {
println!("{}", usize::max_value());
}
打印号码:4294967295
我的项目只进行了初始化,2行使用std::usize;还有普林顿!{},usize::max_值;补充说,没有其他改变
我的rustc输出-版本-详细:
rustc 1.41.1 f3e1a954d 2020-02-24
二进制代码:rustc
提交哈希:f3e1a954d2ead4e2fc197c7da7d71e6c61bad196
提交日期:2020-02-24
主机:i686 pc windows msvc
发布日期:1.41.1
LLVM版本:9.0
删除Rust并使用64位Windows Rustop安装程序重新安装后,我得到:
当前安装选项:
默认主机三元组:x86_64-pc-windows-msvc
默认工具链:稳定
配置文件:默认值
修改路径变量:是
但当我运行Rustop toolchain list时,它会打印一个项目:
stable-i686-pc-windows-msvc默认值
这里发生了什么?正如usize的文档所说:
此原语的大小是引用内存中任何位置所需的字节数。例如,在32位目标上,这是4个字节,在64位目标上,这是8个字节
4294967295是32位整数的最大大小;从而表明您是为32位平台编译的
这一点可以通过您的rustc输出得到证实:
主机:i686 pc windows msvc
您已安装32位Windows编译器。64位编译器表示x86_64-pc-windows-*
您可以将默认的生锈主机更改为64位:
设置默认主机x86_64-pc-windows-msvc
然后,您可能需要卸载并重新安装stable toolchain以将其切换到64位
另见:
如果你的系统真的是64位的——如果你真的想要一个关于正在发生什么的答案——你需要提供足够的信息让某人真正回答这个问题。i、 e.系统信息以及您是如何编译和运行此程序的。@PeterHall我不确定需要提供什么信息,请留下评论,我会添加它,并记住在以后遇到类似问题时添加信息。文档可能需要改进,也许示例可以用cfg注释性语言编写,所以请说明您用于编译和运行程序的命令。
use std::usize;
fn main() {
println!("{}", usize::max_value());
}