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 回シフトされ、2 番目のステートメントでは 32 が左に 2 回シフトされているようです。
値が だけ左にシフトされる-pと、コンパイラはそれをp右にシフトしたものとして扱うというのは本当ですか?
ここで正しい出力が得られるのはなぜですか?

4

0 に答える 0