Heim >Backend-Entwicklung >C++ >Warum verbietet ISO C den Vergleich von Zeigern und Ganzzahlen und wie kann ich diesen Fehler in meinem Code beheben?
ISO-C-Vergleichsfehler: Zeiger und ganze Zahlen
Bei der Arbeit an einem Beispiel aus Bjarne Stroustrups C-Buch sind einige Benutzer auf einen Kompilierungsfehler gestoßen. Zeitfehler, der darauf hinweist, dass ISO C den Vergleich zwischen einem Zeiger und einer Ganzzahl verbietet. Dieses Problem entsteht durch einen Vergleich mit einer char-Variablen und einer String-Konstante in der Funktion „accept()“.
Ursache:
Der Fehler tritt auf, weil ISO C einen direkten Vergleich verbietet eines Zeichenzeigers (z. B. char*) mit einer Ganzzahl (z. B. dem numerischen Wert eines Zeichens in doppelten Anführungszeichen, z. B. „y“).
Lösungen:
Es gibt zwei primäre Möglichkeiten, diesen Fehler zu beheben:
Bevorzugter Ansatz: Verwendung einer String-Variablen:
<code class="cpp">#include <iostream> #include <string> using namespace std; bool accept() { cout << "Do you want to proceed (y or n)?\n"; string answer; cin >> answer; if (answer == "y") return true; return false; }</code>
Alternativer Ansatz: Verwendung von einfachen Anführungszeichen:
<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>
Das obige ist der detaillierte Inhalt vonWarum verbietet ISO C den Vergleich von Zeigern und Ganzzahlen und wie kann ich diesen Fehler in meinem Code beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!