为什么我按负值按位移位是正确的?

时间:2012-07-19 17:21:02

标签: c bit-manipulation bit-shift

  

可能重复:
  Right shifting negative numbers in C

我在SO找到了这个问题,但我发现结果都是未定义的。

int main()
{
   printf("%d\n",32<<-2); <-------------1
   printf("%d\n",32>>-2); <-------------2
   return 0;
}

我的输出为:http://ideone.com/fIaXo

8
128    

似乎在编号1的声明中,32在右边移动了2次,而在第二次移动了32次.32向左移动了2次。
是否真的存在这样的情况:当值-p左移时,编译器将其视为正确移位p次?
为什么我在这里得到正确的输出?

0 个答案:

没有答案