可能的重复:
在 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
向右移动时间?
为什么我在这里得到正确的输出?