0

可能的重复:
在 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 向左移动了 2 次。
当一个值向左移动时-p,编译器是否将其视为p向右移动时间?
为什么我在这里得到正确的输出?

4

0 回答 0