首页 > 其他分享 >INT_MAX和INT_MIN的定义及使用(含溢出问题)

INT_MAX和INT_MIN的定义及使用(含溢出问题)

时间:2023-02-21 22:23:45浏览次数:38  
标签:定义 MIN INT MAX 2147483648 溢出

INT_MAX和INT_MIN的定义及使用(含溢出问题)

定义

C/C++中的 <limits.h> 头文件中定义:

#define INT_MAX   2147483647
#define INT_MIN    (-INT_MAX - 1)
  • INT_MAX为 2^31-1 ,即 2147483647 ;
  • INT_MIN为 -2^31 , 即 2147483648 ;

使用的注意事项

  • 在使用INT_MAX和INT_MIN时,需要 #include<limits.h>;
  • 不能直接用-2147483648来表示INT_MIN,该表达式相当于给+2147483648取负值,会先产生整型溢出问题;

溢出问题

在c/c++中,int 类型的取值范围为 [ -2147483648, 2147483647] ,超过这个范围则会产生溢出问题。

  • 当发生上溢时,即 INT_MAX + N (N为任意正整数),先进行 INT_MAX + 1 = INT_MIN ,这时上溢问题就解决了,之后便是正常的加减法,即 INT_MIN 再加上剩余的数,其结果为 INT_MIN + N -1;
  • 当发生下溢时,即 INT_MIN - N (N为任意正整数),先进行 INT_MIN - 1 = INT_MAX ,这时下溢问题就解决了,之后便是正常的加减法,即 INT_MAX 再减去剩余的数,其结果为 INT_MAX - N +1;
  • 多次溢出时,依次解决。例如 INT_MAX + 1 - 1 ,该表达式根据 + / - 运算符的左结合性,先会发生 INT_MAX + 1 = INT_MIN ,然后发生 INT_MIN - 1 = INT_MAX ,其结果就为 INT_MAX ,依次类推;

标签:定义,MIN,INT,MAX,2147483648,溢出
From: https://www.cnblogs.com/bujidao1128/p/17142692.html

相关文章