当两个运算符均为有符号整数时,则会存在整数溢出的问题
如两个非负整数相加 a+b
解决办法
- 将两个整数强制转换为无符号整数
if((unsigned)x+(unsigned)y>INT_MAX)
complain();
//INT_MAX为最大整数值
- 不进行强制转换
if(x>INT_MAX-b)
complain();
当两个运算符均为有符号整数时,则会存在整数溢出的问题
如两个非负整数相加 a+b
解决办法
if((unsigned)x+(unsigned)y>INT_MAX)
complain();
//INT_MAX为最大整数值
if(x>INT_MAX-b)
complain();