假設我們在對有符號值使用二進制補碼雲端的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的。。
哪裡理解錯了?求解釋 謝謝
x 還是有符號的,ux 才是無符號的。