gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:41:53 25 4
gpt4 key购买 nike

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

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

最佳答案

实现者的错误选择?

说真的,根据标准,“普通整数具有执行架构建议的自然大小环境”,这确实意味着 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/17489857/

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