【发布时间】:2015-10-05 04:02:25
【问题描述】:
表达式如下
(ux-uy) == -(unsigned) (y-x)
其中x 和y 是随机整数,ux 和uy 声明和定义如下
unsigned ux = (unsigned) x;
unsigned uy = (unsigned) y;
我用各种数字测试了c中的表达式,它是正确的 但我无法证明为什么它是正确的。请解释一下。
【问题讨论】:
-
signed是否是ux - uy == -(uy - ux)?你把它想象成一个数学问题,你会看到发生了什么。 -
逐案分析,即当x比y大n时,y比x大n时,相等。
-
我对 RHS 前面的 - 符号感到困惑。它到底是做什么的?
-
@user1335175:演员前面的
-符号表示结果被否定,然后再次转换回(unsigned int)(因为相等的LHS是unsigned int) 在比较完成之前。