Erreur de comparaison en C : pointeur contre entier
Lors de la tentative de compilation d'une fonction simple à partir 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 se produit lors de la comparaison d’un pointeur avec un entier. Dans le code fourni :
#include
#include
using namespace std;
bool accept()
{
cout > answer;
if (answer == "y") return true;
return false;
}
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 :
string answer;
if (answer == "y") return true;
Utiliser la constante de caractère :
Au lieu de comparer la réponse à une chaîne littérale, utilisez une constante de caractère entre guillemets simples :
if (answer == 'y') return true; // Note single quotes for character constant
Les deux méthodes résolvent efficacement l'erreur en garantissant que la comparaison s'effectue entre des types compatibles.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3