gpt4 book ai didi

c++ - cout 中的异常行为。它在声明另一个相同值的字符数组后打印两次字符数组

转载 作者:行者123 更新时间:2023-12-05 08:45:58 24 4
gpt4 key购买 nike

所以我用 C++ 编写了打印字符数组的代码。正常代码是:-

#include <iostream>
using namespace std;

int main()
{
char X[5] = {'A', 'B', 'C', 'D', 'E'};
cout << X << endl;
return 0;
}

它正在按预期打印:-ABCDE 但我尝试创建另一个这样的字符数组

#include <iostream>
using namespace std;

int main()
{
char X[5] = {'A', 'B', 'C', 'D', 'E'};
char Y[5] = {'A', 'B', 'C', 'D', 'E'};
cout << X << endl;
return 0;
}

我以为我会得到相同的输出,但它并没有发生。输出是 ABCDEABCDE 我不明白为什么会这样。
那时我正在我的电脑上编码。所以,我访问了在线的c++编译器,仍然得到了相同的结果。
请任何人帮助我理解为什么会这样?我在我的电脑上使用 C++14。这是online compiler website的链接我在上面重新检查了我的代码。

最佳答案

行为未定义。

std::ostreamconst char* 的重载(由于指针衰减而选择),直到达到 NUL 才停止输出。

因此,在两个数组中都包含 NUL 终止符是解决方法:

char X[/*let the compiler do the counting*/] = {'A', 'B', 'C', 'D', 'E', 0};

&c.

关于c++ - cout 中的异常行为。它在声明另一个相同值的字符数组后打印两次字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70804419/

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