最近,我一直在对C ++进行全面审核,并发现了包含以下内容的代码段:
#include <iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a)
{
b+=a;
}
cout << b << endl;
return 0;
}
代码片段看起来非常简单:它将来自控制台的输入放入a并将其添加到b上,只要有效输入被呈现。但是,每当我尝试使用整数输入运行此程序时,用空格分隔,它会给出一个非常大的负整数(-1218019327是最近的结果,当整个输入只包含数字&#39; 1&# 39)。只有当我修改代码时它才能提供正确的输出:
#include <iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a)
{
cout << a << endl;
b+=a;
}
cout << b << endl;
return 0;
}
为什么添加一个cout语句会彻底改变我的代码的结果(但却是积极的)?
答案 0 :(得分:3)
两个程序都会导致未定义的行为,您没有初始化b
。尝试:
int b = 0;
答案 1 :(得分:0)
您必须初始化b=0;
。或者b
会给你垃圾价值。
#include <iostream>
using namespace std;
int main()
{
int a, b=0;
while (cin >> a)
{
cout << a << endl;
b+=a;
}
cout << b << endl;
return 0;
}
按ctrl-z
,您将获得b
的价值。