不匹配'operator + ='(操作数类型是'std :: basic_ostream <char>'和'int')

mr_*_*zad 1 c++ compiler-errors operators

给出以下代码;

#include<iostream>
using namespace std;

int main(){
    int number_1 = 3;
    int result_1 = 10;
    result_1 += number_1;
    cout << ++result_1;
    cout << result_1 += number_1;
}
Run Code Online (Sandbox Code Playgroud)

该行cout << result_1 += number_1;给了我一个错误.

不匹配'operator + ='(操作数类型是'std :: basic_ostream'和'int')

另一方面,cout << ++result_1;它运行没有任何问题.

任何人都可以解释错误是什么,原因是什么?

son*_*yao 5

  1. 任何人都可以解释错误是什么,原因是什么?

根据Operator Precedence,operator<<优先级高于operator+=,因此您的代码等效于:

(cout << result_1) += number_1;
Run Code Online (Sandbox Code Playgroud)

while cout << result_1将返回std::cout(ie std::ostream&)然后operator+=尝试调用它std::ostream并且它不存在.这就是错误消息试图告诉你的内容.

您可以将其更改为:

cout << (result_1 += number_1) ;
Run Code Online (Sandbox Code Playgroud)

或者从根本上避免这种令人困惑的代码.

result_1 += number_1;
cout << result_1;
Run Code Online (Sandbox Code Playgroud)
  1. 另一方面cout << ++result_1;是运行没有任何问题.

Beasuse的operator++优先级高于operator<<.所以它相当于cout << (++result_1);并且没问题.