You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言中安全计算两个有符号整数的绝对差值?

计算两个int变量的绝对差值:避开溢出陷阱

绝对差值指的是两个数差值的绝对值。如果要计算两个int类型变量x和y的绝对差值,不少人会用这个看似简单的写法:

unsigned diff = abs(x-y);

但这个写法存在致命问题:当x-y发生溢出时(比如x取INT_MIN、y取INT_MAX),会触发C语言的未定义行为,最终得到错误结果。就算退一步假设系统采用回绕行为处理溢出,这段代码返回的结果也是1,完全不是我们预期的UINT_MAX。

内容的提问来源于stack exchange,提问作者CPlus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 19:07:32