Maison > développement back-end > C++ > Pourquoi `==` ne fonctionne-t-il pas pour la comparaison de l'égalité des tableaux en C ?

Pourquoi `==` ne fonctionne-t-il pas pour la comparaison de l'égalité des tableaux en C ?

Patricia Arquette
Libérer: 2024-11-16 11:26:03
original
467 Les gens l'ont consulté

Why Does `==` Not Work for Array Equality Comparison in C  ?

Pourquoi la comparaison d'égalité de tableau à l'aide de == ne fonctionne-t-elle pas ?

En C , l'opérateur d'égalité (==) compare les adresses mémoire de tableaux, plutôt que leur contenu. Ce comportement peut prêter à confusion, car il diffère de l'attente intuitive de comparer les éléments d'un tableau élément par élément.

Considérez le code suivant :

int main()
{
    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

Dans ce code, deux tableaux sont créés avec un contenu identique. Cependant, la sortie indique que les tableaux ne sont pas égaux. En effet, l'opérateur == compare les adresses mémoire des tableaux, qui sont différentes pour chaque tableau.

Pour effectuer une comparaison élément par élément des tableaux, on peut soit utiliser une boucle, soit utiliser std::array classe. La classe std::array fournit une interface légèrement différente pour travailler avec des tableaux et prend en charge la comparaison directe d'égalité.

Exemple utilisant une boucle :

bool arraysEqual(int *arr1, int *arr2, int size)
{
    for (int i = 0; i < size; ++i)
    {
        if (arr1[i] != arr2[i])
            return false;
    }
    return true;
}
Copier après la connexion

Exemple utilisant std::array:

#include <array>

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

    if (iar1 == iar2)
        cout << "Arrays are equal.";
    else
        cout << "Arrays are not equal.";
}
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!

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