Maison > Article > développement back-end > Pourquoi est-ce que je reçois une « Erreur de compilation : ISO C interdit la comparaison entre un pointeur et un entier » ?
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!