Rumah > Artikel > pembangunan bahagian belakang > Mengapa membandingkan tatasusunan menggunakan operator == dalam C dan C sering menghasilkan "tidak sama"?
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!