C语言有符号整数加法,溢出判断?
《C安全编码标准》
第5章 整数
INT32-C 保证有符号整数运算不会产生溢出
- C/C++ code
//书中用si1表示x。 si2表示y。 //加法 signed int x,y,sum; if (((x^y) |(((x(~(x^y)&(1<<(sizeof(int)*CHAR_-1))))+y)^y))>=0) //详细解释下这个条件? { } else { sum=x+y; } ---------------------------------------------------------
问题:
一, 溢出的条件,是什么意思?
详细解释下。
二,书本为什么只是有符号整数的加法,无符号整数的加法怎样防止溢出?
[解决办法]
无符号整数没有溢出, 溢出是有符号数的专利
检查 cpu 的状态标志寄存器中的溢出标志位