Maison > Article > développement back-end > Pourquoi la comparaison de tableaux à l'aide de l'opérateur == en C et C aboutit-elle souvent à « différent » ?
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.";
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 }
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!