64 位 Windows 上 Long 的位大小:仔细观察
64 位 Windows 上 long 的大小问题有引发了一些混乱。虽然文档表明在这种环境下 long 确实是 64 位,但实际情况更加微妙。
在 Unix 系统领域,64 位平台上的整数和指针大小有多种安排,主要是 ILP64和 LP64。然而,微软对 LLP64 的做法有所不同。
ILP64 与 LP64
Type | ILP64 | LP64 | LLP64 |
---|---|---|---|
char | 8 | 8 | 8 |
short | 16 | 16 | 16 |
int | 64 | 32 | 32 |
long | 64 | 64 | 32 |
long long | 64 | 64 | 64 |
pointer | 64 | 64 | 64 |
所有现代 64 位 Unix 系统都使用 LP64,其中 long 是 64 位。 MacOS X 和 Linux 就属于这一类。
LLP64 和 64 位 Windows
Microsoft 的 LLP64 方案优先重新编译 32 位软件而不进行修改。因此,在 64 位 Windows 系统上:
平台中立代码
至实现平台中立的代码,建议使用 C99
通过在代码中使用这些类型,您可以编写与不同平台上的特定整数大小无关的应用程序。
结论
虽然 long 在 Unix 系统上通常为 64 位,但在 64 位 Windows 上,它由于 Microsoft 的 LLP64 方法,仍然是 32 位。通过了解不同的整数大小约定并使用平台中立类型,开发人员可以创建跨各种系统兼容的代码。
以上是在 64 位 Windows 上,'long”真的是 64 位吗?的详细内容。更多信息请关注PHP中文网其他相关文章!