【问题标题】:C++ error: invalid Operands of types 'double' and <unresolved overloaded function type' to binary 'operator'C++ 错误:'double' 类型和 <unresolved 重载函数类型' 到二进制'operator' 类型的无效操作数
【发布时间】:2015-12-02 04:06:30
【问题描述】:

我是编程的初学者,我目前正在尝试制作一个从公斤到磅的转换程序,反之亦然。我不擅长阅读错误代码,所以有人可以告诉我,我做错了什么。

#include <iostream>

using namespace std;

int main()
{

    char response;

    double  Kilo_const = 0.45, Pound_const = 2.20, Kilo_output, Pound_output;

    double Kilo_input, Pound_input;

    cout << "Choose the input unit \nk = kilo and p = pound" << endl;

    cin >> response;

    if (response == 'k'){
        cin >> Kilo_input;
        cout << Pound_output = Kilo_input * Pound_const << endl;
    }
    else (response == 'p'){
        cin >> Pound_input;
        cout << Kilo_output = Pound_input * Kilo_const << endl;
    }
    return 0;
}

【问题讨论】:

  • 请贴出错误信息

标签: c++ converter


【解决方案1】:

你的问题是第 21 行:

cout << Pound_output = Kilo_input * Pound_const << endl;

您在这里尝试做的是为Pound_output 分配一个值,然后将其传递给cout,这是行不通的。

你可以这样做(注意括号!谢谢艾伦):

cout << (Pound_output = Kilo_input * Pound_const) << endl;

Pound_output = Kilo_input * Pound_const;
cout << Pound_output << endl;

这将首先进行转换并打印出来,或者你可以这样做

cout << Kilo_input * Pound_const << endl;

它不会使用变量来存储结果,而是立即打印出来。

同样适用于您的第二次转化。

你的 if 子句还有一个小错误。语法是

if (...) { } else if (...) { }

你忘记了第二个if。如果不存在,则 else 标记没有条件并且将在第一条语句失败时执行。注意区别:

if (a == 1) { cout << "Execute on a = 1"; } else { cout << "Execute on a != 1"; }

if (a == 1) { cout << "Execute on a = 1"; } else if (a == 2) { cout << "Execute on a != 1 and a = 2"; }

【讨论】:

  • 原版可以使用正确的括号,不是吗?赋值只是一个表达式,为什么不能写到cout
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 1970-01-01
相关资源
最近更新 更多