※ 引述《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)