gpt4 book ai didi

c++ - 使用 '\n' 而不是 endl 会影响输出,为什么?

转载 作者:行者123 更新时间:2023-11-30 01:53:44 25 4
gpt4 key购买 nike

所以我用 C++ 创建了一个未初始化的数组,并尝试打印最后一个元素以查看输出结果。未初始化数组中的每个元素的值都应为 0(对吗?),但我得到的输出是其他内容。这是主要功能的样子:

int main() {
int i[5];
cout << i[4] << '\n';
}

运行此输出 1606416656(每次相同的数字)带有换行符。但是,将 '\n' 更改为 endl 会将输出更改为带有换行符的 0

这是为什么?

此外,尝试打印 i[3] 而不是 i[4] 正确输出 0 即使 '\n '。为什么?

我做了一些研究并在某处读到 '\n' 不会“刷新缓冲区”,而 endl 会。这种“刷新流”的实际含义是什么,这会影响输出吗?

最佳答案

Every element in an uninitialized array should have the value of 0 (right?)

不,它们具有不确定的值。使用这些值会产生未定义的行为,这就是您获得不可预测的输出的原因。

What does this "flushing the stream" actually mean, and is this what's affecting the output?

当您写入流时,输出存储在内存缓冲区中,不一定会立即发送到最终目的地(控制台、文件或其他任何地方);这可以带来很大的性能优势,但也可能意味着您看不到最终输出。刷新流会将您写入的数据推送到最终目的地。

关于c++ - 使用 '\n' 而不是 endl 会影响输出,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22860904/

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