Erreur de comparaison en C : pointeur contre entier
Lors de la tentative de compilation d'une fonction simple du livre C de Bjarne Stroustrup, troisième édition, développeurs peut rencontrer l'erreur de compilation :
error: ISO C++ forbids comparison between pointer and integer
Ce problème survient lors de la comparaison d'un pointeur avec un entier. Dans le 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 apparaît dans l'instruction if où la réponse est comparée à une chaîne littérale ("y"). Puisque la réponse est une variable de caractère, elle doit être comparée à une constante de caractère.
Solution
Il existe deux solutions à ce problème :
Utilisez une variable de chaîne :
Déclarez la réponse en tant que type de chaîne au lieu de char. Cela vous permettra de comparer correctement la réponse à une chaîne littérale :
<code class="cpp">string answer; if (answer == "y") return true;</code>
Utiliser la constante de caractère :
Au lieu de comparer la réponse à une chaîne littérale, utilisez une constante de caractère entourée de guillemets simples :
<code class="cpp">if (answer == 'y') return true; // Note single quotes for character constant</code>
Les deux méthodes résolvent efficacement l'erreur en garantissant que la comparaison s'effectue entre des types compatibles.
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!