Heim  >  Artikel  >  Backend-Entwicklung  >  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
Barbara StreisandOriginal
2024-10-30 08:20:02295Durchsuche

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>

Der Fehler tritt in der Zeile auf:

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

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>

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>

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!

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