目录
  1. 1. INT_MAX与`INT_MIN
    1. 1.1. 数据溢出
    2. 1.2. 数值大小
    3. 1.3. 运算
C++整型上下限

INT_MAX`INT_MIN

在C/C++语言中,不能够直接使用-2147483648来代替最小负数,因为这不是一个数字,而是一个表达式。表达式的意思是对整数21473648取负,但是2147483648已经溢出了int的上限,所以定义为
(-INT_MAX -1)

数据溢出

C++中int类型是4字节32位的,范围是$-2147483648$到$+2147483647 $。
(1)最轻微的上溢是INT_MAX + 1 :结果是 INT_MIN;
(2)最严重的上溢是INT_MAX + INT_MAX :结果是-2;
(3)最轻微的下溢是INT_MIN - 1:结果是是INT_MAX;
(4)最严重的下溢是INT_MIN + INT_MIN:结果是0 。

数值大小

因为int占4字节32位,根据二进制编码的规则

INT_MAX = $2^{31}-1$

INT_MIN= $-2^{31}$

C/C++中,所有超过该限值的数,都会出现溢出,出现warning,但是并不会出现error。如果想表示的整数超过了该限值,可以使用长整型long long 占8字节64位。

运算

​ 由于二进制编码按原码、补码和反码的规则进行运算,所有程序中对INT_MAX和INT_MIN的运算应当格外注意,在出现溢出的时候,不遵循数学规则。

INT_MAX + 1 = INT_MIN

INT_MIN - 1 = INT_MAX

abs(INT_MIN) = INT_MIN

INT_MAX + 1 < INT_MAX

INT_MIN - 1 > INT_MIN

abs(INT_MIN) < 0

文章作者: Jachie Xie
文章链接: https://xjc5772.github.io/2020-01/24/%E5%AD%A6%E4%B9%A0/C++%E6%95%B4%E5%9E%8B%E4%B8%8A%E4%B8%8B%E9%99%90/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XJC&Blog
打赏
  • 微信
  • 支付宝

评论