表达式如下
(ux-uy) == -(unsigned) (y-x)
其中x
和y
是随机整数,ux
和uy
声明并定义如下
unsigned ux = (unsigned) x;
unsigned uy = (unsigned) y;
我在c中用不同的数字测试了表达式,这是正确的 但我无法证明为什么它是正确的。请解释一下。
答案 0 :(得分:2)
y-x
- >如果int
减法溢出,则未定义的行为。
所以平等(ux-uy) == -(unsigned) (y-x)
失败了。