2015-09-06 210 views
2

我是一个初学者编程,我目前正在尝试做一个转换程序,从千克到磅,反之亦然。我不擅长阅读错误代码,所以有人可以告诉我,我做错了什么。C++错误:无效操作数的类型'双'和<未解析的重载函数类型'二进制'操作员'

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

请张贴错误消息 – Nidhoegger

回答

1

您的问题是第21行:

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

你正在尝试做的,是一个值赋给Pound_output,然后把它传递给cout,这不会工作。

你既可以做这种方式(注意paranthesis THX阿伦!):

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

原将与右边括号里的工作,不是吗?赋值只是一个表达式,为什么它不能写入'cout'? –

+0

你是绝对正确的!编辑答案 – Nidhoegger