Maison > développement back-end > C++ > Pourquoi ISO C interdit-il de comparer des pointeurs et des entiers, et comment puis-je corriger cette erreur dans mon code ?

Pourquoi ISO C interdit-il de comparer des pointeurs et des entiers, et comment puis-je corriger cette erreur dans mon code ?

Barbara Streisand
Libérer: 2024-10-29 14:05:29
original
672 Les gens l'ont consulté

Why Does ISO C   Forbid Comparing Pointers and Integers, and How Can I Fix This Error in My Code?

Erreur de comparaison ISO C : pointeurs et entiers

En travaillant sur un exemple tiré du livre C de Bjarne Stroustrup, certains utilisateurs ont rencontré un problème de compilation. erreur de temps indiquant qu'ISO C interdit la comparaison entre un pointeur et un entier. Ce problème résulte d'une comparaison impliquant une variable char et une constante chaîne dans la fonction accept().

Cause :

L'erreur se produit car ISO C interdit la comparaison directe d'un pointeur de caractère (tel que char*) avec un entier (tel que la valeur numérique d'un caractère entre guillemets doubles, par exemple "y").

Solutions :

Il existe deux manières principales de résoudre cette erreur :

  1. Approche préférable : utiliser une variable de chaîne :

    • Modifier le type de réponse à la chaîne. Cela permet une comparaison directe avec la constante de chaîne « y », résolvant le problème.
    <code class="cpp">#include <iostream>
    #include <string>
    using namespace std;
    bool accept()
    {
        cout << "Do you want to proceed (y or n)?\n";
        string answer;
        cin >> answer;
        if (answer == "y") return true;
        return false;
    }</code>
    Copier après la connexion
  2. Approche alternative : utilisation de guillemets simples :

    • Si l'utilisation d'une variable char est essentielle, placez la constante de caractère entre guillemets simples pour représenter une constante char.
    <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>
    Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal