C++错误:无效的 'double' 类型的操作数和二进制"运算符"<未解析的重载函数类型"

C++ error: invalid Operands of types 'double' and <unresolved overloaded function type' to binary 'operator'

本文关键字:类型 lt 运算符 函数 重载 操作数 错误 无效 double C++ 二进制      更新时间:2023-10-16

我是一个编程初学者,我目前正试图使一个转换程序从公斤到磅,反之亦然。我不擅长阅读错误代码,所以谁能告诉我,我做错了什么。

#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;
}

你的问题是第21行:

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

你在这里要做的是给Pound_output分配一个值,然后把它传递给cout,这是行不通的。

你可以这样做(注意括号!)感谢Alan):

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"; }