首页 > 代码库 > 溢出

溢出

无符号数相加不会发生溢出。因为会直接截断。但是有符号数相加,会发生溢出。溢出表示大于最大表示了

 

那么如何判断有符号数发生溢出呢?

 

下面两个非负数相加

if(a + b < 0)

若a+b发生溢出,那么a+b的结果是不确定的。《C陷阱》,故上述方法不可行

 

if(a > INT_MAX - b)可行,不计算a+b

或者(unsigned)a  + (unsigned)b > INT_MAX  换成无符号,a+b结果就确定了