gpt4 book ai didi

c++ - 为什么 int 在 64 位编译器上通常是 32 位的?

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:34 30 4
gpt4 key购买 nike

为什么 int 在 64 位编译器上通常是 32 位的?当我开始编程时,我被告知 int 通常与底层架构具有相同的宽度。我同意这也是有道理的,我发现未指定宽度的整数与底层平台一样宽是合乎逻辑的(除非我们谈论的是 8 位或 16 位机器,int 的范围这么小> 几乎不适用)。

后来我了解到 int 在大多数 64 位平台上通常是 32 位的。所以我想知道这是什么原因。对于存储数据,我更喜欢明确指定数据类型的宽度,因此这留下了 int 的通用用法,它不会提供任何性能优势,至少在我的系统上我具有相同的性能32 位和 64 位整数。这样就留下了二进制内存占用空间,虽然不会减少很多,但会略有减少......

最佳答案

实现者的错误选择?

说真的,根据标准,“Plain ints 有执行架构建议的自然大小环境”,这确实意味着 64 位 int 在 64 位上机器。人们可以很容易地争辩说其他任何事情都是不符合。但在实践中,问题更为复杂:从 32 位切换 int到 64 位 int 不会允许大多数程序处理大型数据集或其他任何东西(不像从 16 位切换到 32 位);大多数程序可能是受其他因素的制约。而且会增加数据集的大小,从而减少局部性并减慢程序下来。

最后(可能也是最重要的),如果 int是 64 位, short必须是 16 位或32 位,你将无法指定另一个(除了使用 <stdint.h> 中的 typedef ,意图是这些只应在非常特殊的情况下使用)。我怀疑这是主要动机。

关于c++ - 为什么 int 在 64 位编译器上通常是 32 位的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59199293/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com