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中文網其他相關文章!