Q: 20.6b 我如何确定整型算术不溢出?


A: 通常的方法是,在运算之前把运算对象,和头文件中的极限值进行测试。例如,这样一个“细致的”的加法函数:

int
chkadd(int a, int b)
{
    if(INT_MAX - b < a) {
        fputs("int overflow\n", stderr);
        return INT_MAX;
    }
    return a + b;
}

同时参见问答19.39

补充链接:更多示例代码


(This Chinese translation isn't confirmed by the author, and it isn't for profits.)

Translator : jhlicc@gmai1.c0m
Origin : http://c-faq.com/misc/intovf.html