我可以这样做int c= 0xF^0xF; cout << c;
但是cout << 0xF^0xF;无法编译。为什么?

最佳答案

根据C++ Operator Precedenceoperator<<的优先级高于operator^,因此cout << 0xF^0xF;等效于:

(cout << 0xF) ^ 0xF;
cout << 0xF返回cout(即std::ostream),不能将其用作operator^的操作数。

您可以添加括号以指定正确的优先级:
cout << (0xF ^ 0xF);

10-08 04:36