我在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
次?
为什么我在这里得到正确的输出?