gpt4 book ai didi

c++ - std::cin while 循环给出了一个奇怪的结果

转载 作者:行者123 更新时间:2023-11-30 02:37:37 26 4
gpt4 key购买 nike

最近,我一直在全面复习 C++,并发现了包含以下内容的代码片段:

#include <iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a)
{
b+=a;
}
cout << b << endl;
return 0;
}

代码片段看起来非常简单:它将来自控制台的输入放入 a 并将其添加到 b,只要提供有效输入即可。但是,每当我尝试使用整数输入运行此程序时,用空格分隔,它会给出一个非常大的负整数(-1218019327 是最新的结果,当整个输入仅由数字“1”组成时)。只有当我修改代码时,它才会给出正确的输出:

#include <iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a)
{
cout << a << endl;
b+=a;
}
cout << b << endl;
return 0;
}

为什么添加 cout 语句会如此彻底(但积极地)改变我的代码的结果?

最佳答案

这两个程序都会导致未定义的行为,您没有初始化 b。尝试:

int b = 0;

关于c++ - std::cin while 循环给出了一个奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31506768/

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