C でポインタと整数の間の比較エラーを修正する方法

Linda Hamilton
リリース: 2024-10-23 16:10:02
オリジナル
266 人が閲覧しました

How to Fix Comparison Error Between Pointer and Integer in C

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 つの解決策があります:

  1. 文字列変数を使用します:
    答えを char ではなく string 型として宣言します。これにより、答えを文字列リテラルと正しく比較できるようになります:

    <code class="cpp">string answer;
    if (answer == "y") return true;</code>
    ログイン後にコピー
  2. 文字定数を使用:
    答えを文字列リテラルと比較する代わりに、一重引用符で囲まれた文字定数を使用します:

    <code class="cpp">if (answer == 'y') return true; // Note single quotes for character constant</code>
    ログイン後にコピー

両方のメソッドは、比較が互換性のある型間で行われることを保証することで効果的にエラーを解決します。

以上がC でポインタと整数の間の比較エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!