给std :: cin while循环给出了一个奇怪的结果
问题描述:
为晚,我一直在做的C++进行全面审查,并跨越包含一段代码来执行以下操作:给std :: cin while循环给出了一个奇怪的结果
#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;
+0
甚至更好,'int a; int b = 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
值。
你是否真的用调试器完成了这一步? – MrEricSir