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;它运行没有任何问题.
任何人都可以解释错误是什么,原因是什么?
- 任何人都可以解释错误是什么,原因是什么?
根据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)
- 另一方面
cout << ++result_1;是运行没有任何问题.
Beasuse的operator++优先级高于operator<<.所以它相当于cout << (++result_1);并且没问题.
| 归档时间: |
|
| 查看次数: |
2246 次 |
| 最近记录: |