18

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

オペランドの型に互換性がない (「char」と「const char*」)

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

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

char userInput_Text[3];

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

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

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

4

1 に答える 1

51

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

char userInput_Text[3];

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

参考のため:

  • "x"=const char *
  • 'x'=char
于 2013-01-27T03:11:23.490 に答える