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