假设我们在对有符号值使用二进制补码云端的32位机器上运行代码。对于有符号值使用的是算术右移,而对于无符号值使用的是逻辑右移。变量的声明和初始化如下:
int x=foo();//arbitrary value
int y=bar();//arbitrary value
unsigned ux = x;
unsigned uy = y;
对于下面表达式,或者证明对于所有的x和y值,它都为真,或者给出使得它为假的x和y值。
A. (x>=0)||((2*x)<0)
正确答案是A为假。
我一直以为有符号的x声明为unsigned ux后一定会>=0的。。
哪里理解错了?求解释 谢谢