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

标签 c++ iostream cin

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

相关文章:

c++ - C++ exe (MSVC++2010) 中的 Unicode 问题

c++ - 帮助管理 iostream

c++ - 程序跳过 Getline() 而不接受用户输入

c++ - cin >> ws vs cin.ignore(numeric_limits<streamsize>::max(), '\n' )?

c++ - 如何避免此程序中的无限循环

c++ - 验证 whitepsace 分隔的整数 c++

c++ - 简单的 if 循环无法正常工作

c++ - 正确使用 C++ STL 线程的仿函数

c++ - 为多个项目和配置有效地使用 Visual Studio 项目属性

c++ - 简单的 "Hello World"代码没有出现在命令提示符中