如何弄函数判断是否溢出
例如输入的数字超过了int的范围,怎么防止这种输入,
或者
输入a和b
int c;
c=a+b;
但是a+b已经超过了int的范围,要怎么判断这个溢出
[解决办法]
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不同号时肯定不会溢出。
有符号数还可以用位运算,最高两位进位不同,则结果会溢出。