可能重複:
Left shifting with a negative shift count輸出一個<< with -ve no?
考慮我的代碼如下
int main()
{
int k=1;
k=k<<-1;
printf("%d",k);
}
O/P
-2147483648
爲什麼輸出是這樣的。我知道負號是存儲在2's complement
,但這裏有任何使用-2s補碼的概念。請給我一些想法。
可能重複:
Left shifting with a negative shift count輸出一個<< with -ve no?
考慮我的代碼如下
int main()
{
int k=1;
k=k<<-1;
printf("%d",k);
}
O/P
-2147483648
爲什麼輸出是這樣的。我知道負號是存儲在2's complement
,但這裏有任何使用-2s補碼的概念。請給我一些想法。
如果第二個操作數是負數,則移位操作的結果是不確定的。
http://msdn.microsoft.com/en-us/library/f96c63ed%28v=vs.80%29.aspx
Why am I getting strange results bit-shifting by a negative value?
感謝您的回答。 – pradipta
你想做什麼? – besworland
你期望什麼?你正在轉向一個負指數,不是很有意義 – logoff
這不能是你的完整代碼。對於一個你實際上並不存儲表達式'k << - 1'的結果的地方。 –