判断两个有符号整数的加法和乘法是否溢出

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;
}
    原文作者:大整数乘法问题
    原文地址: https://blog.csdn.net/gylltq/article/details/42488663
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞