首页 > 解决方案 > int、short、long、long long 的大小?

问题描述

根据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_twhich 看起来是错误的。

什么是真的?

标签: ctypesc99

解决方案


在我的计算机上,Linux 中的 long 是 64 位。

Windows 是唯一在 64 位模式下使用 32 位 long 的主要平台,这正是因为在现有代码中普遍存在错误假设。这使得在 Windows 上更改 long 的大小变得困难,因此在 64 位 x86 处理器上,long 在 Windows 中仍然是 32 位,以保持各种现有代码和定义兼容。


推荐阅读