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
Mary-Kate Olsenasal
2024-12-03 00:12:11519semak imbas

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

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

}

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!

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