如何判断整数数据的溢出

来源:互联网 发布:手机联系人数据恢复 编辑:程序博客网 时间:2024/05/01 15:31
 对于C/C++语言来说,分为无符号整数和有符号整数两种,几乎在所有机器中他们都是用补码表示的,判断两个整数相加是否溢出的方法如下:
(1)无符号整数相加,如果结果小于其中任何一个,则溢出;
bool IsOverFlow(unsigned x, unsigned y){   unsigned z = x + y;   if(z < x)      return true;    return false;}
(2) 有符号整数相加,比无符号的相对复杂一点儿:
如果两个整数相加<0,或者两个负数相加>0,(负数在计算机中用补码表示)则溢出。
bool IsOverFlow(int x, int y){   int z = x + y;   if(x > 0 && y > 0 && z < 0)      return true;     if(x < 0 && y <  0 && z > 0)      return true;    return false;}
(3)如何判断一个输入或者转化转化的单个数字是否溢出;
if( num>0x7fffffff || num<(signed int)0x80000000)
int类型的最大正数:0x7fffffff;
int类型的最小负数:0x80000000;

1 0
原创粉丝点击