C の比較エラー : ポインターと整数
Bjarne Stroustrup の C ブック、第 3 版、開発者向けの単純な関数をコンパイルしようとしたときコンパイル時エラーが発生する可能性があります:
error: ISO C++ forbids comparison between pointer and integer
この問題は、ポインターと整数を比較するときに発生します。提供されたコード:
<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>
エラーは、回答が文字列リテラル (「y」) と比較される if ステートメントに表示されます。答えは文字変数であるため、文字定数と比較する必要があります。
解決策
この問題には 2 つの解決策があります:
文字列変数を使用します:
答えを char ではなく string 型として宣言します。これにより、答えを文字列リテラルと正しく比較できるようになります:
<code class="cpp">string answer; if (answer == "y") return true;</code>
文字定数を使用:
答えを文字列リテラルと比較する代わりに、一重引用符で囲まれた文字定数を使用します:
<code class="cpp">if (answer == 'y') return true; // Note single quotes for character constant</code>
両方のメソッドは、比較が互換性のある型間で行われることを保証することで効果的にエラーを解決します。
以上がC でポインタと整数の間の比較エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。