最近,我一直在全面复习 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/