web-dev-qa-db-ja.com

オペランドのタイプに互換性がありません( "char"と "const char *")

次のエラーが表示されます...

オペランドのタイプに互換性がありません( "char"と "const char *")

... ifステートメントを実行しようとしたとき。入力値を格納する方法を理解していないと思いますが、一致する型にキャストできるかどうかはわかりませんか?

再現するコードの例は次のとおりです。

char userInput_Text[3];

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

何が原因なのかわかりません。 1つのタイプがcharで、もう1つのタイプはconst charポインターであるように見えますが、私にはわかりません。参照のため、このエラーは配列を使用していない場合にも発生します)。

そして、ヒント/フィードバックをいただければ幸いです。

12
LeviTheDegu

二重引用符は、C++でのc-stringのショートカット構文です。単一の文字を比較する場合は、代わりに単一引用符を使用する必要があります。コードを次のように変更するだけです。

char userInput_Text[3];

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

参考のため:

  • "x" = const char *
  • 'x' = char
28
Karl Nicoll