首頁  >  文章  >  後端開發  >  C 中的「長」保證至少有 32 位元嗎?

C 中的「長」保證至少有 32 位元嗎?

Barbara Streisand
Barbara Streisand原創
2024-10-26 17:39:301075瀏覽

Is `long` Guaranteed to Have at Least 32 Bits in C  ?

long 保證有 32 位元嗎?

儘管基於 C 標準的常見假設,問題是 long 是否保證有至少 32 位。標準將基本整數類型分類為:

sizeof(char) ≤ sizeof(short int) ≤ sizeof(int) ≤ sizeof(long int)

但是,許多人認為基於此層次結構,long 必須具有 32 位元。然而,該標準明確指出,一個位元組中的位數是實現定義的。

Alf P. Steinbach 的聲明

儘管這看似矛盾,但Alf P. Steinbach 的聲明

Steinbach long long 保證斷言為32 位。他的這項主張是基於 long 可以容納的值範圍(LONG_MIN 到 LONG_MAX)的隱式限制。
LONG_MIN ≤ -2^31 + 1
LONG_MAX ≥ 2^31 - 1

C 標準引用了C 標準(18.3.2),其中定義了:

與32 位表示的連接

  1. 雖然這建立了一個long 範圍,但它並沒有明確保證32 位元。但是,有兩種可能性:
  2. 二進位補碼表示:
  3. 如果負數以二進位補碼表示,則儲存 LONG_MIN 或 LONG_MAX 需要 32 位元。
  4. 明確符號位:

如果負數使用符號位,則總儲存空間仍需要 32 位元。

結論

雖然 C 標準沒有明確要求 long 具有 32 位,但最小範圍要求(LONG_MIN 到 LONG_MAX)隱含地要求它。這是因為表示這些值需要 32 位元儲存或具有等效值容量的特定於實現的機制。因此,可以得出結論,C保證long至少有32位。

以上是C 中的「長」保證至少有 32 位元嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn