」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > C++ 中的「long」保證至少有 32 位元嗎?

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

發佈於2024-11-07
瀏覽:845

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 斷言 long 保證為 32 位。他的這項主張是基於對 long 可以保存的值範圍(LONG_MIN 到 LONG_MAX)的隱式限制。

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

LONG_MIN ≤ -2^31   1
LONG_MAX ≥ 2^31 - 1

與 32 位元表示的連接

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

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

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

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

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3