コンパイル エラー: "ISO C はポインターと整数の比較を禁止しています"
C で関数をコンパイルしようとすると、 「コンパイル エラー: ISO C ではポインタと整数の比較が禁止されています。」このエラーは、ポインタ値を整数と比較しようとしたために発生します。
問題
提供されたコード スニペット内:
<code class="cpp">#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; }</code>
エラーは次の行で発生します:
<code class="cpp">if (answer == "y") return true;</code>
ここで、変数のanswerはcharとして宣言されていますが、文字列リテラル「y」は文字列です。 ISO C では、char ポインタと文字列リテラルを比較することは、微妙なエラーを引き起こす可能性があるため禁止されています。
解決策
この問題を解決するには、次の 2 つの方法があります。
1.答えを文字列に変換します:
<code class="cpp">string answer;</code>
このアプローチは、最新の C のベスト プラクティスと一致するため、推奨されます。
2.文字列リテラルには一重引用符を使用します。
<code class="cpp">if (answer == 'y') ...</code>
一重引用符は、char 変数の答えと互換性のある char 定数を示します。
以上が「コンパイル エラー: ISO C はポインタと整数の比較を禁止しています」が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。