Heim  >  Artikel  >  Backend-Entwicklung  >  So beheben Sie einen Vergleichsfehler zwischen Zeiger und Ganzzahl in C

So beheben Sie einen Vergleichsfehler zwischen Zeiger und Ganzzahl in C

Linda Hamilton
Linda HamiltonOriginal
2024-10-23 16:10:02266Durchsuche

How to Fix Comparison Error Between Pointer and Integer in C

Vergleichsfehler in C: Zeiger vs. Ganzzahl

Beim Versuch, eine einfache Funktion aus Bjarne Stroustrups C-Buch, dritte Auflage, Entwickler zu kompilieren Möglicherweise tritt beim Kompilieren ein Fehler auf:

error: ISO C++ forbids comparison between pointer and integer

Dieses Problem tritt auf, wenn ein Zeiger mit einer Ganzzahl verglichen wird. Im bereitgestellten Code:

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

Der Fehler erscheint in der if-Anweisung, in der die Antwort mit einem String-Literal („y“) verglichen wird. Da Antwort eine Zeichenvariable ist, muss sie mit einer Zeichenkonstante verglichen werden.

Lösung

Es gibt zwei Lösungen für dieses Problem:

  1. Verwenden Sie eine String-Variable:
    Deklarieren Sie die Antwort als String-Typ statt als Zeichen. Dadurch können Sie die Antwort korrekt mit einem String-Literal vergleichen:

    <code class="cpp">string answer;
    if (answer == "y") return true;</code>
  2. Zeichenkonstante verwenden:
    Anstatt die Antwort mit einem String-Literal zu vergleichen, Verwenden Sie eine in einfache Anführungszeichen eingeschlossene Zeichenkonstante:

    <code class="cpp">if (answer == 'y') return true; // Note single quotes for character constant</code>

Beide Methoden beheben den Fehler effektiv, indem sie sicherstellen, dass der Vergleich zwischen kompatiblen Typen erfolgt.

Das obige ist der detaillierte Inhalt vonSo beheben Sie einen Vergleichsfehler zwischen Zeiger und Ganzzahl in C. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn