微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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似乎提供了更正确的代码.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐