Bit Size of Long on 64-Bit Windows: A Closer Look
The question of the size of long on 64-bit Windows has sparked some confusion. While documentation suggests that long is indeed 64-bits in this environment, the reality is more nuanced.
In the realm of Unix systems, there are various arrangements for integer and pointer sizes on 64-bit platforms, mainly ILP64 and LP64. However, Microsoft's approach differs with LLP64.
ILP64 vs. 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 |
All modern 64-bit Unix systems use LP64, where long is 64-bits. MacOS X and Linux fall under this category.
LLP64 and 64-Bit Windows
Microsoft's LLP64 scheme prioritizes recompiling 32-bit software without modifications. Consequently, on 64-bit Windows systems:
Platform-Neutral Code
To achieve platform-neutral code, it is recommended to use types from the C99
By using these types in your code, you can write applications that are independent of the specific integer sizes on different platforms.
Conclusion
While long is typically 64-bits onUnix systems, on 64-bit Windows, it remains 32-bits due to Microsoft's LLP64 approach. By understanding the different integer size conventions and using platform-neutral types, developers can create code that is compatible across a wide range of systems.
The above is the detailed content of Is `long` Really 64-Bits on 64-Bit Windows?. For more information, please follow other related articles on the PHP Chinese website!