Heim > Backend-Entwicklung > C++ > Hauptteil

Warum führt der Vergleich von Arrays mit dem ==-Operator in C und C oft zu „ungleich'?

Susan Sarandon
Freigeben: 2024-11-16 22:21:03
Original
166 Leute haben es durchsucht

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

Array-Gleichheitsvergleich mit dem ==-Operator

Beim Vergleich von Arrays mit dem ==-Operator ist es wichtig, den Unterschied zwischen Zeigerabfall und zu verstehen elementweiser Vergleich. Standardmäßig zerfallen Arrays in C und C in Zeiger auf ihre ersten Elemente. Dies wird als Zeigerzerfall bezeichnet.

Im bereitgestellten Codeausschnitt:

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.";
Nach dem Login kopieren

Beim Vergleich von iar1 und iar2 mit == zerfallen beide Arrays in Zeiger auf ihre ersten Elemente. Da iar1 und iar2 zwei separate Arrays im Speicher sind, haben diese Zeiger unterschiedliche Werte. Folglich wird der Vergleich als falsch (ungleich) ausgewertet.

Um einen elementweisen Vergleich der Arrays durchzuführen, kann man entweder eine Schleife schreiben, die jedes Element einzeln vergleicht, oder die Vorlage std::array von verwenden die Standard-Vorlagenbibliothek (STL). Die std::array-Vorlage bietet elementweise Vergleichsfunktionen.

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
}
Nach dem Login kopieren

In diesem Codeausschnitt führt der ==-Operator einen elementweisen Vergleich der Arrays durch und die Ausgabe gibt an, ob der Inhalt von Die Arrays sind gleich oder nicht.

Das obige ist der detaillierte Inhalt vonWarum führt der Vergleich von Arrays mit dem ==-Operator in C und C oft zu „ungleich'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage