根据C99§5.2.4.2.1-1,以下类型的大小取决于实现。也就是说,它们的大小等于或大于以下值:
short >= 8 bits int >= 16 bits long >= 32 bits long long >= 64 bits
我一直听说这long
是always 32-bits
,并且严格等同于int32_t
看起来错误的地方。
什么是真的?
在我的计算机上,Linux中的长度为64位。
Windows是唯一在64位模式下使用32位long的主要平台,这完全是因为在现有代码中普遍存在错误的假设。这使得很难在Windows上更改long的大小,因此在64位x86处理器上,Windows中的long仍然为32位,以保持各种现有代码和定义的兼容性。