Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa membandingkan tatasusunan menggunakan operator == dalam C dan C sering menghasilkan "tidak sama"?

Mengapa membandingkan tatasusunan menggunakan operator == dalam C dan C sering menghasilkan "tidak sama"?

Susan Sarandon
Susan Sarandonasal
2024-11-16 22:21:03163semak imbas

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

Perbandingan Kesamaan Tatasusunan Menggunakan == Operator

Apabila membandingkan tatasusunan menggunakan operator ==, adalah penting untuk memahami perbezaan antara pereputan penunjuk dan perbandingan mengikut unsur. Secara lalai, tatasusunan dalam C dan C mereput kepada penunjuk kepada elemen pertamanya. Ini dipanggil pereputan penunjuk.

Dalam coretan kod yang disediakan:

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.";

Apabila membandingkan iar1 dan iar2 menggunakan ==, kedua-dua tatasusunan akan mereput kepada penunjuk kepada elemen pertamanya. Memandangkan iar1 dan iar2 ialah dua tatasusunan berasingan dalam ingatan, penunjuk ini akan mempunyai nilai yang berbeza. Akibatnya, perbandingan akan dinilai kepada palsu (tidak sama).

Untuk melakukan perbandingan mengikut unsur tatasusunan, seseorang boleh sama ada menulis gelung yang membandingkan setiap elemen secara individu atau menggunakan templat std::array daripada perpustakaan templat standard (STL). Templat std::array menyediakan kefungsian perbandingan mengikut elemen.

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
}

Dalam coretan kod ini, operator == melakukan perbandingan mengikut unsur tatasusunan dan output akan menunjukkan sama ada kandungan tatasusunan adalah sama atau tidak.

Atas ialah kandungan terperinci Mengapa membandingkan tatasusunan menggunakan operator == dalam C dan C sering menghasilkan "tidak sama"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn