C の比較エラー : ポインタと整数
Bjarne Stroustrup の C ブック、第 3 版の単純な関数をコンパイルしようとしたとき、開発者向けコンパイル時エラーが発生する可能性があります:
error: ISO C forbids comparison between pointer and integer
この問題は、ポインターと整数を比較するときに発生します。提供されたコード:
#include
#include
using namespace std;
bool accept()
{
cout > answer;
if (answer == "y") return true;
return false;
}
このエラーは、回答が文字列リテラル (「y」) と比較される if ステートメントで発生します。答えは文字変数であるため、文字定数と比較する必要があります。
解決策
この問題には 2 つの解決策があります:
文字列を使用する Variable:
答えを char ではなく string 型として宣言します。これにより、答えを文字列リテラルと正しく比較できるようになります。
string answer;
if (answer == "y") return true;
文字定数を使用:
答えを文字列リテラルと比較する代わりに、文字定数を使用します一重引用符で囲みます:
if (answer == 'y') return true; // Note single quotes for character constant
どちらのメソッドも、比較が互換性のある型間で行われることを保証することで効果的にエラーを解決します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3