【发布时间】:2014-03-26 17:48:49
【问题描述】:
例如,我有一个带有 64 位寄存器的处理器。 可以是 2 种不同的编译器吗:一个 int 大小等于 32 位,另一个 int 大小等于 16 位?
【问题讨论】:
-
简短回答:是的。另见:stackoverflow.com/questions/11438794/…
-
编译器决定了 int 的大小。如果您可以在 64 位系统上运行 16 位编译器,那么您的 int 将是 16 位。
-
这取决于编译器作者认为什么是好的选择。它曾经是自动的,并且与处理器的寄存器大小相匹配。这已经结束了,内存是今天的限制。许多 64 位编译器将使用 32 位 int。
-
@HansPassant:使
int32 位的另一个基本原理是它允许预定义类型覆盖 8、16、32 和 64 位。如果char是 8 位,int是 64 位,那么short(可能)是 16 位或 32 位,并且不包括其他大小。 (不过,扩展整数类型也是一种选择。)
标签: c