C ++错误C2040?

时间:2010-01-02 08:50:59

标签: c++

错误讯息:

这是什么意思?

我该如何解决?

错误C2040:'==':'int'与'const char [2]'的间接级别不同

代码:

#include <iostream>
#include <cmath>
using namespace std;

int round(double number);
//Assumes number >=0.
//Returns number rounded to the nearest integer.

int main()
{
    double doubleValue;
    char ans;

    do
    {
        cout << "Enter a double value: ";
        cin >> doubleValue;
        cout << "Rounded that number is " <<round(doubleValue)<< endl;
        cout << "Again? (y/n): ";
        cin >> ans;

    }
    //Here is the line generating the problem, while(...);

    while (ans == 'y' || ans == "Y");

    cout << "End of testing.\n";

    return 0;
}

//Uses cmath
int round(double number)
{
    return static_cast<int>(floor(number + 0.5));
}

4 个答案:

答案 0 :(得分:10)

您需要单引char个文字。你为第一个而不是第二个正确地做了这个:

while (ans == 'y' || ans == "Y");

这应该是:

while (ans == 'y' || ans == 'Y');

双引号用于字符串(const char[])文字。

答案 1 :(得分:1)

此行上有双引号而不是单引号:

while (ans == 'y' || ans == "Y");

答案 2 :(得分:1)

大写Y包含在双引号中,创建const char [2](Y后跟null)。你可能会说:

while (ans == 'y' || ans == 'Y');

答案 3 :(得分:-2)

我不知道这有用与否,但可能如下:

while((ans =='y')||(ans =='Y'));