【问题标题】:Invalid operands of types 'double' and 'const char [2]' to binary 'operator!='|'double' 和 'const char [2]' 类型的无效操作数到二进制 'operator!='|
【发布时间】:2013-12-14 04:09:25
【问题描述】:

我有一个需要制作的程序,所以如果我输入我的第一个数字作为 x,它将终止,但我不能这样做,因为我的 num1 是双精度数。如果有人可以帮助我弄清楚如何做到这一点,那就太好了。谢谢

#include <iostream>

using namespace std;
void compute(double, double);

int main()
{
double num1, num2;
while (num1!="x")
{
cout << "Enter First Number: " << endl;
cin >> num1;
cout << "Enter Second Number: " << endl;
cin >> num2;
compute(num1, num2);
}
return 0;
}
void compute(double num1, double num2)
{
double sum,diff,prod,quotient;
cout << "First Number: " << num1 << endl;
cout << "Second Number: " << num2 << endl;
sum=num1+num2;
diff=num1-num2;
prod=num1*num2;
quotient=num1/num2;
cout << "Sum: " << sum << endl;
cout << "Difference: " << diff << endl;
cout << "Product: " << prod << endl;
cout << "Quotient" << quotient << endl;
}

【问题讨论】:

    标签: c++


    【解决方案1】:

    您的主要问题是您将数字与const char*(即字符串文字)进行比较。

    如果您想编译您的程序,您可能需要将num1 与字符x 进行比较,例如num1 != 'x'(不是单引号)。我不能保证这会正常工作,因为比较双精度和字符有点可笑,但它应该可以编译,并且可能会让你走得更远。

    【讨论】:

      【解决方案2】:

      您将输入存储在std::string 中,并在将其转换为double 之前检查字符串的内容:

      std::string s;
      std::cout >> s;
      
      if (s == "x")
        {
           // do something
        }
      else
        {
           std::stringstream ss(s);
           double num1;
           ss >> num1;
           // do something else
        }
      

      【讨论】:

        猜你喜欢
        • 2020-06-23
        • 1970-01-01
        • 2014-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多