操作数类型不兼容(“char”和“const char *”)

22

我收到了以下错误信息...

操作数类型不兼容("char" 和 "const char*")

... 当尝试执行一个if语句时。我猜测我没有理解输入值是如何存储的,虽然我不确定是否可以将其强制转换为匹配的类型?

可用于重现的示例代码是:

char userInput_Text[3];

if (userInput_Text[1] == "y") {
    // Do stuff.
}

我不确定是什么原因导致了这个问题。看起来其中一种类型是 char 类型,而另一种类型是 const char 指针,尽管我不确定为什么(需要参考的是,在我没有使用数组时也会出现这个错误)。

任何提示/反馈都将不胜感激。

1个回答

59

在C++中,双引号是表示的一种简写语法。如果你想比较单个字符,你必须使用单引号。你只需要将你的代码更改为以下内容:

char userInput_Text[3];

if (userInput_Text[1] == 'y') { // <-- Single quotes here.
    // Do stuff.
}

参考:

  • "x" = const char *
  • 'x' = char
  • "x"表示const char *
  • 'x'表示char

2
@LeviTheDegu 作为一个用那些 ' 和 " 意义相同的编程语言开发过不少代码的人,我理解你的挫败感 :-) - Karl Nicoll
3
从技术上讲,"x" 是一个 const char (&)[2] 类型,而不是 const char*。 - chris
非常正确 @chris,但我认为针对这个问题最好使用 const char *。不过你的评论已经点赞了 :) - Karl Nicoll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接