Home > Backend Development > C++ > Is `long` Really 64-Bits on 64-Bit Windows?

Is `long` Really 64-Bits on 64-Bit Windows?

DDD
Release: 2024-12-28 20:50:18
Original
966 people have browsed it

Is `long` Really 64-Bits on 64-Bit Windows?

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:

  • long and int remain 32-bit in size
  • New data types are introduced for 64-bit integers

Platform-Neutral Code

To achieve platform-neutral code, it is recommended to use types from the C99 header, which provides:

  • int8_t to int64_t for signed integers
  • uintptr_t for unsigned integers to store pointers
  • intmax_t for the largest integer size on the platform

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!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template