为什么我得到的错误与'operator ^'不匹配

del*_*amp 2 c++ operators xor operator-precedence

我收到了一个错误

10:13: error: no match for 'operator^' (operand types are 'std::basic_ostream<char>' and 'int')
10:13: note: candidates are:
In file included from /usr/include/c++/4.9/ios:42:0,
             from /usr/include/c++/4.9/ostream:38,
             from /usr/include/c++/4.9/iostream:39,
             from 2:
/usr/include/c++/4.9/bits/ios_base.h:161:3: note: std::_Ios_Iostate std::operator^(std::_Ios_Iostate, std::_Ios_Iostate)
operator^(_Ios_Iostate __a, _Ios_Iostate __b)
^
Run Code Online (Sandbox Code Playgroud)

代码是

// Example program
#include <iostream>
#include <string>

int main()
{
int a=1;
int b=2;

std::cout<<a^b;
}
Run Code Online (Sandbox Code Playgroud)

有哪些操作数可以使用operator ^

son*_*yao 5

根据运算符优先级,operator<<优先级高于operator^.所以std::cout<<a^b;相当于(std::cout<<a)^b;; (std::cout<<a)std::cout通过引用返回,这是一个std::basic_ostream<char>; 正如错误消息所说,你不能operator^std::cout(std::basic_ostream<char>)和int.

您可以使用括号来指定操作数应绑定到运算符的优先级.

std::cout << (a^b);
//           ~   ~
Run Code Online (Sandbox Code Playgroud)