-5
整數移位
main()
{
int i=-1,j=32,k;
k=i<<j;
printf("i=%d j=%d k=%d\n",i,j,k);
}
輸出:按位左超過31倍
i=-1 j=32,k=-1
如果我正在J = 33然後k=-2
和如果j = 34則k = -4.its後32次重複左移,即如果j = 64,則k變爲-1,並且如果j = 65,則k = -2。但邏輯位應該丟失,即輸出爲0.這裏發生了什麼。
對不起,提出這樣的問題。我是初學者,所以我無法理解編譯器在這裏做什麼。你可以解釋嗎?
我看到的典型行爲(儘管不是標準化的)是它導致模32的移位。 –