ホームページ  >  記事  >  バックエンド開発  >  「コンパイル エラー: ISO C はポインタと整数の比較を禁止しています」が表示されるのはなぜですか?

「コンパイル エラー: ISO C はポインタと整数の比較を禁止しています」が表示されるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 08:20:02294ブラウズ

Why am I Getting a

コンパイル エラー: "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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。