Rumah > pembangunan bahagian belakang > C++ > Mengapa Tatasusunan C Dibandingkan sebagai Tidak Sama Menggunakan Operator ==?

Mengapa Tatasusunan C Dibandingkan sebagai Tidak Sama Menggunakan Operator ==?

Mary-Kate Olsen
Lepaskan: 2024-12-03 00:12:11
asal
526 orang telah melayarinya

Why Do C   Arrays Compare as Unequal Using the == Operator?

Memahami Perbandingan Kesamaan Tatasusunan dalam C

Apabila membandingkan tatasusunan menggunakan operator ==, pengaturcara sering menemui hasil yang tidak dijangka. Untuk menyelidiki isu ini, mari kita analisa coretan kod di bawah:

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.";
}
Salin selepas log masuk

Walaupun mengandungi unsur yang sama, kod tersebut mengeluarkan "Arrays are not equal." Untuk memahami tingkah laku ini, kita mesti meneliti cara C mengendalikan perbandingan tatasusunan.

Apabila membandingkan tatasusunan menggunakan ==, ungkapan itu dikurangkan kepada membandingkan penunjuk kepada elemen pertama setiap tatasusunan. Walau bagaimanapun, dalam kes ini, iar1 dan iar2 mewakili dua tatasusunan berbeza yang disimpan pada alamat memori yang berbeza. Oleh itu, mereka menilai kepada petunjuk yang tidak sama, menghasilkan output "tidak sama".

Untuk melakukan perbandingan mengikut unsur, pendekatan alternatif boleh digunakan. Satu kaedah melibatkan penggunaan gelung untuk membandingkan setiap elemen secara individu. Sebagai alternatif, untuk C 11 dan lebih baru, std::array menyediakan pendekatan yang lebih berstruktur untuk pengendalian tatasusunan. Dalam kod yang disemak di bawah, std::array digunakan untuk mewakili tatasusunan, dan operator == melakukan perbandingan mengikut unsur, menghasilkan hasil yang dijangkakan:

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 {
  // not the same

}
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Tatasusunan C Dibandingkan sebagai Tidak Sama Menggunakan Operator ==?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan