Maison >développement back-end >C++ >Pourquoi C interdit-il de comparer des pointeurs et des entiers ?

Pourquoi C interdit-il de comparer des pointeurs et des entiers ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-28 08:15:02894parcourir

Why Does C   Forbid Comparing Pointers and Integers?

Erreur du compilateur : interdiction par ISO C des comparaisons pointeur-entier

Lors de l'expérimentation d'une fonction simple du manuel C de Bjarne Stroustrup, les développeurs rencontrez fréquemment l'erreur de compilation : "ISO C interdit la comparaison entre un pointeur et un entier." Cette erreur provient de la comparaison entre un pointeur et un entier.

Un exemple de ce problème survient lors de la comparaison d'une entrée de caractère à la chaîne "y". 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 se produit car le code définit la réponse comme un caractère (char), tandis que "y" est une chaîne littérale. Pour résoudre ce problème, vous avez deux options :

  1. Convertir la chaîne littérale en caractère : Utilisez la réponse == 'y' pour comparer le caractère saisi au caractère 'y' .
  2. Utilisez une chaîne au lieu d'un caractère : Déclarez la réponse sous forme de chaîne (stringanswer;) puis comparez-la à la chaîne "y".

Les deux solutions répondent à la restriction du compilateur en garantissant que vous comparez un pointeur vers un entier avec un pointeur vers un autre entier ou un pointeur vers une chaîne.

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