首頁 > 後端開發 > C++ > 主體

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

Susan Sarandon
發布: 2024-11-16 22:21:03
原創
163 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板