首頁  >  文章  >  後端開發  >  為什麼在 C 和 C 中使用 == 運算子比較陣列經常會導致「不等於」?

為什麼在 C 和 C 中使用 == 運算子比較陣列經常會導致「不等於」?

Susan Sarandon
Susan Sarandon原創
2024-11-16 22:21:03162瀏覽

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

使用== 運算子進行陣列相等比較

使用== 運算子比較數組時,了解指針衰減和指針衰減之間的差異非常重要逐元素比較。預設情況下,C 和 C 中的陣列衰減為指向其第一個元素的指標。這稱為指針衰減。

在提供的程式碼片段中:

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

使用 == 比較 iar1 和 iar2 時,兩個陣列都會衰減為指向其第一個元素的指標。由於 iar1 和 iar2 是記憶體中的兩個獨立數組,因此這些指標將具有不同的值。因此,比較將計算為 false(不等於)。

要對陣列執行逐元素比較,可以寫一個單獨比較每個元素的循環,或使用 std::array 範本標準範本庫(STL)。 std::array 模板提供逐元素比較功能。

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
}

在此程式碼片段中,== 運算子對陣列執行逐元素比較,輸出將指示是否數組是否相等。

以上是為什麼在 C 和 C 中使用 == 運算子比較陣列經常會導致「不等於」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn