读书人

怎么弄函数判断是否溢出

发布时间: 2013-02-24 17:58:56 作者: rapoo

如何弄函数判断是否溢出
例如输入的数字超过了int的范围,怎么防止这种输入,
或者
输入a和b
int c;
c=a+b;
但是a+b已经超过了int的范围,要怎么判断这个溢出

[解决办法]

引用:
第二个直接用
if(a+b>范围)判断也行吧,那第一种情况呢


if(a+b>UINT_MAX)是不行的,结果永远为假,编译时可能会给你警告。

无符号数应该写成if(a>UINT_MAX-b)或if(a+b<a)

有符号数则写成if( (a>0&&b>0&&a+b<=0)
[解决办法]
(a<0&&b<0&&a+b>=0) )。 a,b不同号时肯定不会溢出。

有符号数还可以用位运算,最高两位进位不同,则结果会溢出。

读书人网 >C++

热点推荐