したがって、私は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