例如,在2和1的補碼中,INT_MAX * -1是一個有效數字。這是有保證的嗎?還有其他保證嗎?例如,INT_MIN可以在任何體系結構上爲-1或0?有什麼我們可以知道的(INT_MAX + INT_MIN)?我們是否可以知道(INT_MAX + INT_MIN)不會導致未定義的行爲?C標準是否對INT_MIN和INT_MAX之間的關係做出了保證?
3
A
回答
1
C規範要求INT_MIN爲-32767或更少,INT_MAX爲32767或更多。就我所知,沒有進一步的保證。第22頁:http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
1
你保證INT_MIN最多-32767和INT_MAX至少32767
所以INT_MAX-1始終是有效的int。
INT_MAX + INT_MIN然後也總是被定義。
3
INT_MAX + INT_MIN
總是被定義的,因爲添加兩個相反符號的數字永遠不會溢出。
爲了儘可能準確地回答您的問題,C標準規定了2的補碼,1的補碼或符號幅度表示。 (C11 6.2.6.2:2)。 int
類型可能有填充位,但符號和值位在任何情況下都用於表示對稱或幾乎對稱的數字集。根據平臺是否使用2的補碼,總是有INT_MIN == - INT_MAX - 1
或INT_MIN == - INT_MAX
。
並且當然INT_MAX
至少是32767,對應於值和符號位的最小值16位。
相關問題
- 1. INT_MAX&INT_MIN之間的隨機數
- 2. (C++)INT_MAX和INT_MIN無法解析?
- 3. coffeescript中INT_MAX,INT_MIN的符號是什麼?
- 4. C是否對目標文件做出任何保證?
- 5. C++和Ruby之間的關係和依賴關係是什麼?
- 6. c標準是否保證對簽名和未簽名的位模式解釋?
- 7. 損失與驗證準確度之間的關係是什麼?
- 8. 標準是否保證了初始化的順序?
- 9. 瞭解Liskov和OCP之間的關係
- 10. INT_MIN/-1是否在C++中定義了行爲?
- 11. JPA標準多對多和OneToOne關係
- 12. Visual Studio 2010是否打破了C++項目之間的「項目依賴關係」?
- 13. 出口和requirejs之間的關係
- 14. C# - UDPClient和Socket之間的關係
- 15. MSVC++ rand()和C#System.Random之間的關係
- 16. shell和C程序之間的關係
- 17. 原子變量是否能保證 - 「發生在關係之前」?
- 18. 是否有參考文件列出了Glassfish模塊和Maven依賴聲明之間的對應關係?
- 19. 此代碼是否由C標準保證?
- 20. 在Java 6和7之間是否改變了NFC標準化語義?
- 21. MFCreateAggregateSource是否對訂購做出任何保證?
- 22. 標準的實體之間的關係 - Grails的
- 23. innobackupex對標準做了什麼?
- 24. C#關閉標準輸出
- 25. 「STL」和「C++標準庫」之間是否存在清晰的分隔定義?
- 26. DFA和Loop,NFA和遞歸之間是否存在關係?
- 27. LSTM-Keras是否考慮了時間序列之間的依賴關係?
- 28. 類和枚舉之間的組合關係是否正確?
- 29. 是否有變量之間的關係「var x」和範圍
- 30. ER圖:瞭解關係和實體之間的聯繫
由於最小值和最大值的符號相反(見附錄E),所以它們的總和肯定是可表示的。附件E還說'INT_MIN'不能爲-1,因爲它必須至多是-32767。 –
INT_MIN必須小於或等於-32767。所以不,它不能是-1或0。 –