c – 这个用于检测整数加法溢出的函数实际上是否有效?

前端之家收集整理的这篇文章主要介绍了c – 这个用于检测整数加法溢出的函数实际上是否有效?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在阅读 this question评论时,我遇到了一个指向 comp.lang.c FAQ链接,该链接显示了一个“小心添加功能”,据称可以检测到整数溢出:
int
chkadd(int a,int b)
{
    if (INT_MAX - b < a) {
        fputs("int overflow\n",stderr);
        return INT_MAX;
    }
    return a + b;
}

如果b == -1,这怎么不溢出?如果假设a和b都是正数,那么为什么首先将它们设为int而不是unsigned int?

解决方法

可能他们只是忽略了它. FAQ页面上的 Additional links似乎提供了更正确的代码.

猜你在找的C&C++相关文章