gpt4 book ai didi

c++ - 为什么字符数组之间的这种比较不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 14:54:50 24 4
gpt4 key购买 nike

char a[1][2];
char b[1][2];

a[0][0] = 'a';
a[0][1] = 'b';
b[0][0] = 'a';
b[0][1] = 'b';

if(a[0] == b[0]){
cout << "worked\n";
}

据我所知,这种字符数组之间的比较并不像您期望的那样工作。 if 语句不执行,因为条件 a == b 返回 false。这是为什么?

最佳答案

在这个声明中

if(a == b){
cout << "worked\n";
}

a 和 b 被隐式转换为指向相应数组第一个元素的指针。于是就有了两个指针的比较。由于数组占据内存中的不同区域,因此条件将始终等于 false。

没有像数组比较这样的操作。要比较两个数组,您必须将数组的所有元素相互比较。例如,您可以使用标准算法 std::equal。例如

if( std::equal( std::begin( a ), std::end( a ), std::begin( b ) ) ){
cout << "worked\n";
}

另一种方法是使用具有比较运算符的标准容器 std::array。例如

std::array<char, 2> a = { 'a', 'b' };
std::array<char, 2> b = { 'a', 'b' };

if(a == b){
cout << "worked\n";
}

关于c++ - 为什么字符数组之间的这种比较不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20902305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com