c ++编译错误:ISO C ++禁止指针和整数之间的比较

时间:2010-02-15 02:05:53

标签: c++ compiler-errors

我正在尝试Bjarne Stroustrup的C ++书籍第三版。在实现一个相当简单的函数时,我得到以下编译时错误:

error: ISO C++ forbids comparison between pointer and integer

可能导致这种情况的原因是什么?这是代码。错误发生在if行:

#include <iostream>
#include <string>
using namespace std;
bool accept()
{
    cout << "Do you want to proceed (y or n)?\n";
    char answer;
    cin >> answer;
    if (answer == "y") return true;
    return false;
}

谢谢!

5 个答案:

答案 0 :(得分:35)

您有两种方法可以解决此问题。首选方法是使用:

string answer;

(而不是char)。另一种解决方法是:

if (answer == 'y') ...

(注意单引号而不是double,表示char常量)。

答案 1 :(得分:7)

字符串文字用引号分隔,类型为char * not char。

示例:"hello"

因此,当您将char与char *进行比较时,您将得到相同的编译错误。

char c = 'c';
char *p = "hello";

if(c==p)//compiling error
{
} 

要修复使用由单引号分隔的字符文字。

示例:'c'

答案 2 :(得分:5)

您需要将这些双引号更改为单个。 即。 if (answer == 'y')返回true;

以下是C ++中String Literals的一些信息: http://msdn.microsoft.com/en-us/library/69ze775t%28VS.80%29.aspx

答案 3 :(得分:3)

“y”是一个字符串/数组/指针。 'y'是字符/整数类型

答案 4 :(得分:2)

您必须记住对char常量使用单引号。 所以使用

if (answer == 'y') return true;

而不是

if (answer == "y") return true;

我对此进行了测试并且可以正常运行