1.当两个有符号整数相加的结果超出了类型所能表达的数值范围时,便会发生截断溢出。
函数isAddOverflow用于判断两数相加是否溢出。(参见练习2.31)
int isAddOverflow(int x, int y)
{
int sum = x + y;
return (x > 0 && y > 0 && sum < 0) || (x < 0 && y < 0 && sum > 0);
}
2.同样的,当两个有符号整数相乘时,也有可能发生截断溢出。
函数 isMultiOverflow用于判断两数相乘是否溢出。(参见练习2.35)
int isMultiOverflow(int x, int y)
{
int m = x * y;
return !x || m / x == y;
}