C语言有两类整数算术运算,有符号运算与无符号运算,在计算两数的加减乘除运算,往往要考虑溢出的情况
例:检查两个非负整型变量a+b是否溢出
第一种:if(a+b < 0)
complain();
这种做法是检查内部寄存器的标志位是否为负
第二种: if((unsigned)a +(unsigned)b >INT_MAX)
complain();
这种做法是强制将a和b都强制转换成无符号整数
INT_MAX是<limits.h>中定义的最大整数值
第三种: if(a > INT_MAX - b)
complain();
这种做法不需要用到无符号算术运算符