Maison > développement back-end > C++ > le corps du texte

Pourquoi la comparaison de tableaux à l'aide de l'opérateur == en C et C aboutit-elle souvent à « différent » ?

Susan Sarandon
Libérer: 2024-11-16 22:21:03
original
166 Les gens l'ont consulté

Why does comparing arrays using the == operator in C and C   often result in

Comparaison de l'égalité des tableaux à l'aide de l'opérateur ==

Lors de la comparaison de tableaux à l'aide de l'opérateur ==, il est important de comprendre la distinction entre la dégradation du pointeur et comparaison par élément. Par défaut, les tableaux en C et C se désintègrent en pointeurs vers leurs premiers éléments. C'est ce qu'on appelle la dégradation du pointeur.

Dans l'extrait de code fourni :

int iar1[] = {1, 2, 3, 4, 5};
int iar2[] = {1, 2, 3, 4, 5};

if (iar1 == iar2)
    cout << "Arrays are equal.";
else
    cout << "Arrays are not equal.";
Copier après la connexion

Lors de la comparaison de iar1 et iar2 à l'aide de ==, les deux tableaux se désintégreront en pointeurs vers leurs premiers éléments. Puisque iar1 et iar2 sont deux tableaux distincts en mémoire, ces pointeurs auront des valeurs différentes. Par conséquent, la comparaison sera évaluée comme fausse (pas égale).

Pour effectuer une comparaison élément par élément des tableaux, on peut soit écrire une boucle qui compare chaque élément individuellement, soit utiliser le modèle std::array de la bibliothèque de modèles standard (STL). Le modèle std::array fournit une fonctionnalité de comparaison par élément.

std::array<int, 5> iar1{1, 2, 3, 4, 5};
std::array<int, 5> iar2{1, 2, 3, 4, 5};

if (iar1 == iar2) {
    // Arrays contents are the same
} else {
    // Arrays contents are not the same
}
Copier après la connexion

Dans cet extrait de code, l'opérateur == effectue une comparaison par élément des tableaux, et la sortie indiquera si le contenu de les tableaux sont égaux ou non.

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!

source:php.cn
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