【问题标题】:Operand types are incompatible ("char" and "const char*")操作数类型不兼容(“char”和“const char*”)
【发布时间】:2013-01-10 17:30:27
【问题描述】:

我收到以下错误...

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

... 尝试执行 if 语句时。我假设我不了解输入值是如何存储的,尽管我不确定是否可以将其转换为匹配类型?

要重现的示例代码是:

char userInput_Text[3];

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

我不确定是什么原因造成的。看起来一种类型是 char 而另一种是 const char 指针,虽然我不确定是什么,作为参考,当我不使用数组时也会发生此错误。

非常感谢提示/反馈。

【问题讨论】:

    标签: c++ c arrays types


    【解决方案1】:

    双引号是 C++ 中 c-string 的快捷语法。如果要比较单个字符,则必须改用单引号。您可以简单地将您的代码更改为:

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

    供参考:

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

    【讨论】:

    • @LeviTheDegu 作为一个在语言中开发了他相当份额的代码的人,其中 ' 和 " 意思相同,我理解你的沮丧:-)
    • 从技术上讲,"x"const char (&amp;)[2],而不是 const char *
    • 非常真实的@chris,但我认为最好使用与问题相关的const char *。不过评论点赞:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 2016-05-19
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多