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 位表示的連接
如果負數使用符號位,則總儲存空間仍需要 32 位元。
結論
雖然 C 標準沒有明確要求 long 具有 32 位,但最小範圍要求(LONG_MIN 到 LONG_MAX)隱含地要求它。這是因為表示這些值需要 32 位元儲存或具有等效值容量的特定於實現的機制。因此,可以得出結論,C保證long至少有32位。以上是C 中的「長」保證至少有 32 位元嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!