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

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

Barbara Streisand
リリース: 2024-10-30 08:20:02
オリジナル
395 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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