【发布时间】:2015-10-09 00:02:05
【问题描述】:
最近,我一直在对 C++ 进行全面审查,并遇到了一个包含以下内容的代码 sn-p:
#include <iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a)
{
b+=a;
}
cout << b << endl;
return 0;
}
代码 sn-p 看起来非常简单:只要提供有效输入,它将来自控制台的输入放入 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 语句会如此彻底(但肯定地)改变我的代码结果?
【问题讨论】:
-
您是否真的用调试器逐步完成了这个?