Erreur ISO interdit la comparaison entre pointeur et entier

Erreur ISO interdit la comparaison entre pointeur et entier
Cet article concerne une erreur qui se produit couramment tout en comparant les pointeurs et les entiers. Avant de passer à notre sujet, nous devons savoir ce qu'est l'ISO. ISO signifie Organisation des normes internationales. Cette entreprise développe et publie des normes internationales. Lors de la programmation dans le langage C ++, nous obtenons souvent cette erreur que l'ISO interdit la comparaison entre pointeur et entier. Cette erreur se produit également dans d'autres langues telles que la langue C. La principale question se pose sur la raison pour laquelle l'ISO n'autorise pas les comparaisons entre les pointeurs et les entiers.

La réponse est que dans le langage C ++ lorsqu'un programmeur essaie de comparer deux données différentes, le système lancera l'erreur de comparaison. Ainsi, un entier est un type de données différent et un pointeur est une adresse de mémoire. Par conséquent, le compilateur donnera une erreur car ce sont tous deux des données de données différentes. Cette erreur se produit non seulement lors de la comparaison des pointeurs et des entiers, il se produit chaque fois que nous essayons de comparer deux variables de données différentes.

Syntaxe

Il s'agit d'un message d'erreur, donc il n'a pas de syntaxe mais nous pouvons vous montrer à quoi ressemble cette erreur:

Erreur: ISO C ++ interdit la comparaison entre pointeur et entier [-fperMissive]

Exemple # 01:

Maintenant, pour comprendre l'erreur en profondeur, nous effectuerons un exemple dans lequel nous comparerons notre variable avec un type de données différent et nous verrons si le système lance une erreur ou non. À cette fin, nous avons déclaré un tableau de caractères nommé «X» avec une longueur de 5. Nous avons imprimé nos messages pour la lisibilité de l'utilisateur. Maintenant, si nous jetons un coup d'œil à la ligne numéro 4, nous verrons que nous comparons notre variable avec le mot «bonjour». Le but de notre code est si les valeurs de notre variable et de la valeur passaient correspondent. Le compilateur doit entrer dans la condition IF. Après cela, le compilateur reviendra (0) et sortira avec succès de notre code. Maintenant, exécutons notre code.

#inclure
Utilisation de Namespace Std;
char x [5];
cout x;
if (x == 'bonjour')

couter<<"Hi How are You";

return (0);

Après avoir exécuté notre code, nous obtiendrons l'erreur suivante de notre compilateur en conséquence. Si nous examinons attentivement le message d'erreur, nous pouvons voir que le compilateur a souligné une erreur à la ligne 7. C'est la ligne où nous essayions de comparer notre variable avec une valeur «bonjour». Le compilateur prend des cordes ou des personnages en doubles citations comme («bonjour»). Mais ici, nous avons transmis la valeur dans des devis uniques comme ('bonjour'). Ainsi, les données ne correspondent pas et le compilateur reconnaît notre valeur passée en tant que pointeur. En raison de tout cela, le compilateur ne sera pas en mesure de faire une comparaison entre eux et il lancera une erreur que nous pouvons voir dans la figure ci-dessous en couleur rouge.

Maintenant, essayons de résoudre l'erreur et d'exécuter avec succès notre code. À cette fin, dans notre cas, nous n'aurons qu'à changer la valeur passée de «bonjour» à «bonjour» afin que le système le reconnaisse comme un personnage. Nous allons simplement changer de citations simples avec des citations doubles. Après cela, nous exécuterons notre code.

Après avoir exécuté notre code, la figure ci-dessus est à quoi ressemblera notre sortie. Le compilateur a exécuté avec succès notre code et imprimé ce que nous lui avons demandé d'imprimer. Après cela, cela nous montre le message que le programme s'est terminé avec le code de sortie 0 car enfin, nous avons retourné 0 de notre fonction principale. Ainsi, nous pouvons voir qu'en ne faisant que passer le type de données correct, nous avons résolu notre problème.

Exemple # 02:

Dans l'exemple précédent, nous avons expliqué comment le compilateur lance une erreur. Mais nous n'avons pas pris un entier comme notre variable. Nous prendrons un entier et essaierons de le comparer avec le pointeur. Pour ce faire, nous avons initialisé un tableau «i» avec 1 longueur. Nous avons déclaré une autre variable R qui est un entier et l'avons adoptée la valeur 4. Nous voulons voir si les valeurs correspondent au système doivent retourner 1 et s'ils ne sont pas égaux, le système retournera 0. Alors, exécutons notre code pour voir ce qui se passe.

#inclure
#inclure
Utilisation de Namespace Std;
int main ()

int i [1];
int r = 4;

si je != r)

return (0);

autre
retour (1);


Après l'exécution de notre code, c'est la sortie. Le système nous a à nouveau donné l'erreur. Dans ce cas, il est à la ligne 10. Si nous retournons en arrière et regardons notre code, nous verrons que sur la ligne 10, nous comparons notre tableau avec notre entier. Nous n'avons pas précisé quel index comparons-nous. Ainsi, le système comparera toute la mémoire avec notre entier. Dans notre code, la mémoire sera un pointeur. Le système nous donnera l'erreur en raison de ce type de données incohérent.

Maintenant, nous allons résoudre l'erreur. Pour ce faire, nous indiquerons simplement la longueur de notre tableau au système. Pour cela, nous remplacerons le «i» par «i [1]» afin que le système prenne l'entier de l'indice de notre tableau et comparera cet entier avec notre entier déclaré personnalisé qui est «R».

Maintenant dans l'image ci-dessus, nous pouvons voir que notre code est exécuté avec succès et nous renvoyait 0. Cela signifie que je [1] n'est pas égal à R. Mais l'essentiel est que l'erreur est résolue et le code est compilé et exécuté avec succès. Si les valeurs étaient les mêmes, le système aurait retourné 1.

Conclusion

Dans ce guide, nous avons discuté d'une erreur qui se produit lors de l'écriture de code. Nous avons expliqué pourquoi cette erreur se produit, ce qui fait des erreurs d'un programmeur qui a conduit à cette erreur et comment éviter et résoudre l'erreur. Nous avons également effectué différents exemples et essayé d'obtenir cette erreur dans différentes conditions. Après cela, nous avons résolu les erreurs et souligné les erreurs de notre code pour vous aider à mieux comprendre.