下面的代码输出1和0我怎么不知道为什么

时间:2020-07-26 21:56:18

标签: c++

我了解下面的代码正在输出布尔值问题的结果,但我不明白为什么它输出1和0而不是1和1。

#include <iostream>
using namespace std;

int main() 
{
    string d = "abc", e = "abc";
    char a[] = "abc", b[] = "abc";
    cout << (d == e);
    cout << (a == b);

    return 0;
}
//outputs 10

我还尝试输出存储在变量a和b中的值,并且两者都得到相同的值

#include <iostream>
using namespace std;

int main() 
{
    string d = "abc", e = "abc";
    char a[] = "abc", b[] = "abc";
    cout << (d == e);
    cout << (a == b);
    cout << "\n" << a << "\n";
    cout << b;

    return 0;
}
// outputs 10
//abc
//abc

2 个答案:

答案 0 :(得分:2)

在C语言中,std::string有一个特殊的operator==,可以实际上比较字符串。与您可能会读到的相反,std::string与字符数组等效。 Char数组实质上被视为指针,因此==比较不同的内存地址,因此程序将输出0

答案 1 :(得分:1)

要比较2个char数组,应使用strcmp,==运算符将比较指针地址而不是值本身。您还可以迭代数组并逐元素比较。