首页 >后端开发 >C++ >为什么使用 == 运算符比较 C 数组时不相等?

为什么使用 == 运算符比较 C 数组时不相等?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-03 00:12:11484浏览

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

理解 C 语言中的数组相等比较

使用 == 运算符比较数组时,程序员经常会遇到意想不到的结果。为了深入研究这个问题,我们来分析下面的代码片段:

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

尽管包含相同的元素,但代码输出“数组不相等”。要理解这种行为,我们必须检查 C 如何处理数组比较。

使用 == 比较数组时,表达式简化为比较指向每个数组第一个元素的指针。然而,在这种情况下,iar1 和 iar2 代表存储在不同内存地址的两个不同的数组。因此,它们评估为不相等的指针,从而导致“不相等”的输出。

要执行逐元素比较,可以采用替代方法。一种方法涉及使用循环来单独比较每个元素。或者,对于 C 11 及更高版本,std::array 提供了一种更加结构化的数组处理方法。在下面修改后的代码中,使用 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 {
  // not the same

}

以上是为什么使用 == 运算符比较 C 数组时不相等?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn