※ 引述《wtchen (沒有存在感的人)》之銘言:
:
: INT_MIN -2147483647 // compiler實作時最小值不可大於 -(2147483648-1)
: ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^
: INT_MAX 2147483647 // compiler實作時最小值不可小於 (2147483648-1)
: ^^^^^^^^^^^^ ^^^^^^^^^^^^^^
: 不過由於32bit能顯示的範圍就是2**32種,所以一般作業系統會把
: ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
: INT_MIN多減去1,也就是int 的顯示範圍為-2147483648 ~ +2147483647。
: 當程式跑到abs(-2147483648)>0時,由於int不存在2147483648,
: 於是正確結果無法被有限的數位顯示(undefined behavior) 解釋奇怪的地方
: ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
不知道這樣有沒有比較好:
INT_MIN = -2147483648
INT_MAX = 2147483647
由於 integer literal 會被視為 int 整數型態
所以 #define INT_MIN -2147483648 是行不通的(超過 int 上界)
因此編譯器標頭檔實作時可以定義成 #define INT_MIN (-INT_MAX - 1)