main()
{
int i=-1,j=32,k;
k=i<<j;
printf("i=%d j=%d k=%d\n",i,j,k);
}
输出:
i=-1 j=32,k=-1
如果我取j = 33 k=-2
,那么如果j = 34,那么k = -4。它在左移32次后重复,即如果j = 64,k变为-1,如果j = 65,则k = -2。但逻辑上位应该丢失,即输出为 0。这里发生了什么。
很抱歉提出这样的问题。我是初学者,所以我无法理解编译器在这里做了什么。你可以解释吗?