首頁 > 後端開發 > C++ > 在 64 位元 Windows 上,「long」真的是 64 位元嗎?

在 64 位元 Windows 上,「long」真的是 64 位元嗎?

DDD
發布: 2024-12-28 20:50:18
原創
958 人瀏覽過

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

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 系統上:

  • long 和 int 的大小仍為 32 位元
  • 為 64 位元整數引入了新資料型別

平台中立代碼

至實現平台中立的程式碼,建議使用C99 中的型別標頭,其中提供:

  • int8_t 到int64_t(用於有符號整數)
  • uintptr_t(用於無符號整數,用於儲存指標)
  • intmax_t(用於平台上最大整數大小)

透過在程式碼中使用這些類型,您可以編寫與不同平台上的特定整數大小無關的應用程式。

結論

雖然 long 在 Unix 系統上通常為 64 位,但在 64 位 Windows 上,它由於 Microsoft 的 LLP64 方法,仍然是 32 位。透過了解不同的整數大小約定並使用平台中立類型,開發人員可以創建跨各種系統相容的程式碼。

以上是在 64 位元 Windows 上,「long」真的是 64 位元嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板