どのようにコンパイラは、次の場合を区別しない:正しいブラケットなしのCOUTと< <がために常にあるようだとして、コンパイラの自己前提としてほとんどの場合にはCPPエラーで<<演算子
cout << a; //Case 1 :prints a
cout << a << b; // Case 2 :prints both a and b
cout << (a << b); // Case 3 :Left shifts a by b bits and prints shifted a
cout << a&b; // Case 4 :Throws an ERROR
出力ストリームにを挿入する。。しかし、なぜ最後のケースで失敗するのですか?IMO:これは適切にビットごとにbの答えを与えたはずです。エラーが4の場合には発生しないのはなぜ
cout<< (a&b); //gives correct output of bitwise and a , b.
:私はブラケティングなければ、それは正しいとなりますでしょうか?
C++オペレータ優先順位の[参照](http://en.cppreference.com/w/cpp/language/operator_precedence)をご覧ください:) – George
これは演算子の優先順位によるものです。また、左と右の引数を受け入れる '<<'のような二項演算子の概念もあります。 'cout'では' cout'を返して、途中で続けることができます。しかし、演算子の優先順位が間違っている場合... – AndyG
私は非常によく知っている<<より大きな優先順位&が、なぜそれが<<は_insertion_演算子であり、4番目のケースでは左シフトではないことが明らかですか? @George – Akash