【发布时间】:2013-07-03 14:44:39
【问题描述】:
为什么int 在 64 位编译器上通常是 32 位?当我开始编程时,我被教导 int 通常与底层架构具有相同的宽度。而且我同意这也是有道理的,我发现未指定宽度的整数与底层平台一样宽是合乎逻辑的(除非我们谈论的是 8 位或 16 位机器,int 的这么小的范围将几乎不适用)。
后来我了解到int 在大多数 64 位平台上通常是 32 位的。所以我想知道这是什么原因。对于存储数据,我更喜欢明确指定的数据类型宽度,因此这留下了int 的通用用法,它不会提供任何性能优势,至少在我的系统上我对 32 位和 64 位整数具有相同的性能.这样就剩下二进制内存占用了,虽然不会减少很多...
【问题讨论】:
-
嗯,每个可用位长度都有一种类型是很好的,不是吗?不幸的是,
int失去了“原生字长”类型的地位。 -
有很长的路要走。然后长长
-
我建议阅读this 答案。 C++ 标准只要求符合一个范围。 32 位适合该范围,如果将其设为 32 位或 64 位,则取决于实现。
-
... 和 int32_t, int64_t ....
标签: c++ compiler-construction int sizeof platform