C语言有符号整数加法,溢出判断?

csoma csoma 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
《C安全编码标准》
第5章 整数
INT32-C 保证有符号整数运算不会产生溢出






//书中用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;
}


---------------------------------------------------------------------------------------------

问题:
一, 溢出的条件,是什么意思?
详细解释下。

二,书本为什么只是有符号整数的加法,无符号整数的加法怎样防止溢出?
...全文
评论 8
收藏 已收藏
分享
返回顶部
csoma
C语言 70,039 成员 243,237 内容