0
  dy <<= 1;
  dx <<= 1;

これは私が見つけたいくつかの C++ コードです。それは変数に対して何を行い、その演算子は何と呼ばれますか?

4

3 に答える 3

5

それが1ビット左にシフトdyします。dx

これは (dy と dx に演算子 =<< オーバーロードがない限り) と同等です。

dy = dy << 1;
dx = dx << 1;

dxとが整数型の場合dy、2 を掛けることと同じです。

負の数を左シフトするのは未定義の動作であることに注意してください。

これは、単純に 2 を掛けるよりも効率的だと考えるプログラマーによる醜いハックです (そうではありませんが、読みにくくなります)。

于 2012-05-19T13:45:32.223 に答える
0

この操作はビット シフトと呼ばれます。dy と dx のバイナリ表現は、ゼロを追加することで 1 シンボル左に移動します。基本的に、結果は dx と dy が 2 倍になります (オーバーフローが発生しない限り)。

于 2012-05-19T13:46:33.643 に答える
0

ビットシフト演算子です。指定したシフト量でビットを一方または他方にシフトします。

投稿したコードは、次と同じ意味です。

dx = dx << 1、およびdy = dy << 1

于 2012-05-19T13:49:45.407 に答える