Heim > Backend-Entwicklung > C++ > Warum erhalte ich einen „Kompilierungsfehler: ISO C verbietet den Vergleich zwischen Zeiger und Ganzzahl'?

Warum erhalte ich einen „Kompilierungsfehler: ISO C verbietet den Vergleich zwischen Zeiger und Ganzzahl'?

Barbara Streisand
Freigeben: 2024-10-30 08:20:02
Original
395 Leute haben es durchsucht

Why am I Getting a

Kompilierungsfehler: „ISO C verbietet den Vergleich zwischen Zeiger und Ganzzahl“

Beim Versuch, eine Funktion in C zu kompilieren, kann ein Fehler auftreten „Kompilierungsfehler: ISO C verbietet den Vergleich zwischen Zeiger und Ganzzahl.“ Dieser Fehler resultiert aus dem Versuch, einen Zeigerwert mit einer Ganzzahl zu vergleichen.

Das Problem

Im bereitgestellten Codeausschnitt:

<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>
Nach dem Login kopieren

Der Fehler tritt in der Zeile auf:

<code class="cpp">if (answer == "y") return true;</code>
Nach dem Login kopieren

Hier wird die Variable Antwort als char deklariert, während das String-Literal „y“ ein String ist. Der Vergleich eines char-Zeigers mit einem String-Literal ist in ISO C verboten, da dies zu subtilen Fehlern führen kann.

Lösungen

Es gibt zwei Möglichkeiten, dieses Problem zu beheben:

1. Konvertieren Sie die Antwort in eine Zeichenfolge:

<code class="cpp">string answer;</code>
Nach dem Login kopieren

Dieser Ansatz wird bevorzugt, da er mit modernen C-Best Practices übereinstimmt.

2. Verwenden Sie einfache Anführungszeichen für das Zeichenfolgenliteral:

<code class="cpp">if (answer == 'y') ...</code>
Nach dem Login kopieren

Einfache Anführungszeichen bezeichnen eine char-Konstante, die mit der char-Variablenantwort kompatibel ist.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich einen „Kompilierungsfehler: ISO C verbietet den Vergleich zwischen Zeiger und Ganzzahl'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage