したがって、私はC ++で少し操作を試みただけです。これが私が試したものです:
int a = 1<<2;
cout<<a;
これは出力をとして与えます4
。
int a = 1<<3;
cout<<a;
これは出力を次のように与えます 8
しかし、私がするとき:
int a = 1<<2 + 1<<3;
cout<<a;
それはとして出力を与えます64
。なんでそうなの?
私も試しました:
int a = 1<<2;
int b = 1<<3;
cout<<a + b;
12
期待どおりに出力が得られます。
それ
—
ピートベッカー
1<<2 + 1<<3
は本当に1<< 2+1 <<3
ですからです。空白に惑わされないでください。
原則として、そのような場合は括弧を使用します。常に必要なわけではありませんが、読みやすさが向上し、そのようなエラーのリスクが軽減されます。さらに、演算子の優先順位のすべてのケースを暗記する必要はありません。
—
RHertel
<<
の優先順位は+
、1<<2 + 1<<3
=1<<(2 + 1)<<3