【问题标题】:no operator "=" matches these operands operand types are std::basic_ostream<char, std::char_traits<char>> = int没有操作符 "=" 匹配这些操作数操作数类型是 std::basic_ostream<char, std::char_traits<char>> = int
【发布时间】:2018-02-06 15:26:23
【问题描述】:

在 C++ 中运行代码时,我收到错误 no operator "=" 匹配这些操作数的操作数类型是 std::basic_ostream> = int,我不确定是什么实际导致了错误。

#include <iostream>
#include <string>
#include <fstream>
#include <cctype>
using namespace std;

int main()
{
    int num1, num2;
    double average;

    // Input 2 integers
    cout << "Enter two integers separated by one or more spaces: ";
    cin >> num1, num2;

    //Find and display their average
    cout << average = (num1 + num2) / 2;

    cout << "\nThe average of these 2 numbers is " << average << "endl";

    return 0;
}

【问题讨论】:

  • cout &lt;&lt; average = (num1 + num2) / 2; 可能不符合您的要求。检查operator precedence
  • cin &gt;&gt; num1, num2; 也不会像你认为的那样做
  • average = (num1 + num2) / 2; cout &lt;&lt; average;
  • cout &lt;&lt; 在那里做什么?您稍后会显示平均值。
  • Maxim 的答案是正确的,也将"endl" 更改为endl

标签: c++ visual-studio


【解决方案1】:

编译器处理

cout << average = (num1 + num2) / 2;

作为:

(cout << average) = ((num1 + num2) / 2);

更多详情请见C++ operator precedence

修复:

cout << (average = (num1 + num2) / 2);

更喜欢更简单的语句:

average = (num1 + num2) / 2;
cout << average;

还有

cin >> num1, num2;

应该是

cin >> num1 >> num2;

【讨论】:

  • 进行建议更改后,我得到“错误 C4700:使用未初始化的局部变量 'num2'”我不确定这是什么意思。
  • @TerrenceLong 这意味着您在变量有值之前使用它。 cin &gt;&gt; num1, num2 不变 num2
猜你喜欢
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多