ホームページ >バックエンド開発 >C++ >C ではなぜポインタと整数の比較が禁止されているのでしょうか?

C ではなぜポインタと整数の比較が禁止されているのでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-28 08:15:02894ブラウズ

Why Does C   Forbid Comparing Pointers and Integers?

コンパイラ エラー: ISO C のポインタと整数の比較の禁止

開発者は、Bjarne Stroustrup の C 教科書の単純な関数を試しているときに、 「ISO C ではポインタと整数の比較が禁止されています。」というコンパイル エラーが頻繁に発生します。このエラーは、ポインタと整数の比較に起因します。

この問題の 1 つの例は、文字入力と文字列 "y" を比較するときに発生します。提供されたコード:

<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>

コードでは回答が文字 (char) として定義されているのに対し、「y」は文字列リテラルであるため、エラーが発生します。これを解決するには、2 つのオプションがあります:

  1. 文字列リテラルを文字に変換します: 文字入力を文字 'y' と比較するには、answer == 'y' を使用します。 .
  2. 文字の代わりに文字列を使用します: 答えを文字列として宣言し (string Answer;)、それを文字列 "y" と比較します。

どちらの解決策も、整数へのポインタを別の整数へのポインタまたは文字列へのポインタと確実に比較することで、コンパイラの制限に対処しています。

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

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