Maison >développement back-end >C++ >Pourquoi est-ce que je reçois une « Erreur de compilation : ISO C interdit la comparaison entre un pointeur et un entier » ?

Pourquoi est-ce que je reçois une « Erreur de compilation : ISO C interdit la comparaison entre un pointeur et un entier » ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 08:20:02381parcourir

Why am I Getting a

Erreur de compilation : "ISO C interdit la comparaison entre un pointeur et un entier"

Lorsque vous essayez de compiler une fonction en C, vous pouvez rencontrer un "Erreur de compilation : ISO C interdit la comparaison entre un pointeur et un entier." Cette erreur résulte d'une tentative de comparaison d'une valeur de pointeur avec un entier.

Le problème

Dans l'extrait de code fourni :

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

L'erreur se produit sur la ligne :

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

Ici, la variable réponse est déclarée comme un caractère, tandis que la chaîne littérale "y" est une chaîne. Comparer un pointeur char à une chaîne littérale est interdit en ISO C , car cela peut conduire à des erreurs subtiles.

Solutions

Il existe deux façons de résoudre ce problème :

1. Convertir la réponse en chaîne :

<code class="cpp">string answer;</code>

Cette approche est préférée car elle s'aligne sur les meilleures pratiques C modernes.

2. Utilisez des guillemets simples pour la chaîne littérale :

<code class="cpp">if (answer == 'y') ...</code>

Les guillemets simples désignent une constante char, qui est compatible avec la réponse de la variable char.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn