我使用的语言是 C。
我的代码如下:
int sign_x=~(x>>31)+1;
int sign_y=~(y>>31)+1;
int sign=sign_x^sign_y;
return ((!sign)&(!(!(0x80000000&(y+(~x+1)))))+(sign&(!sign_x)));
当我设置输入 x=2147483647[0x7fffffff],y=-2147483648[0x80000000] 时,结果是 0。我想知道为什么结果是 0 而不是 1,因为第一部分是 0,第二部分是 1。当我改变运算符“+”到“|”,结果OK。
有谁能够帮助我?谢谢