ホームページ > バックエンド開発 > C++ > ISO C ではポインターと整数の比較が禁止されているのはなぜですか? コード内のこのエラーを修正するにはどうすればよいですか?

ISO C ではポインターと整数の比較が禁止されているのはなぜですか? コード内のこのエラーを修正するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-29 14:05:29
オリジナル
631 人が閲覧しました

Why Does ISO C   Forbid Comparing Pointers and Integers, and How Can I Fix This Error in My Code?

ISO C 比較エラー: ポインターと整数

Bjarne Stroustrup の C 書籍の例に取り組んでいるときに、一部のユーザーがコンパイルエラーに遭遇しました。 ISO C がポインタと整数の比較を禁止していることを示す時間エラー。この問題は、accept() 関数での char 変数と文字列定数を含む比較から発生します。

原因:

ISO C では直接比較が禁止されているためにエラーが発生します。文字ポインタ (char* など) と整数 (二重引用符で囲まれた文字の数値、例: "y") の組み合わせ。

解決策:

このエラーを解決するには、主に 2 つの方法があります:

  1. 推奨されるアプローチ: 文字列変数を使用する:

    • Change文字列に対する応答のタイプ。これにより、文字列定数 "y" との直接比較が可能になり、問題が解決されます。
    <code class="cpp">#include <iostream>
    #include <string>
    using namespace std;
    bool accept()
    {
        cout << "Do you want to proceed (y or n)?\n";
        string answer;
        cin >> answer;
        if (answer == "y") return true;
        return false;
    }</code>
    ログイン後にコピー
  2. 代替アプローチ: 一重引用符の使用:

    • char 変数の使用が必須の場合は、文字定数を一重引用符で囲んで char 定数を表します。
    <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>
    ログイン後にコピー

以上がISO C ではポインターと整数の比較が禁止されているのはなぜですか? コード内のこのエラーを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート