-1

在过去的几天里,我一直在使用“C++ Primer Plus”一书自学 C++。我一直在取得不错的进展。但是其中一项执行给我带来了一些麻烦。

这是我应该做的:

编写一个程序,要求用户输入两个整数。然后程序应该计算并报告两个整数之间(包括两个整数)的所有整数的总和。此时,假设先输入较小的整数。例如,如果用户输入 2 和 9,程序应该报告从 2 到 9 的所有整数之和为 44。

这是我的代码:

#include <iostream>
using namespace std;

int main()
{

   int a;
   int b;
   int c;

   cout << "Please enter the first number: ";
   cin >> a;
   cin.get();

   cout << "Please enter the second number: ";
   cin >> b;
   cin.get();


   for (int i = a; i <= b; i++)
   {
      c += i;       
   }

   cout << c;
   cin.get();
   return 0;

}

每次我运行它,结果都会是 2293673。有趣的是,我做了一个 google 搜索,我找到的工作程序与我的基本相同,除了那些工作和我没有的事实。

所以我的问题是:我到底做错了什么?提前致谢!

PS:对不起我的英语。

4

2 回答 2

15

您尚未初始化变量 c。它应该被初始化为零。

int c = 0;
于 2013-10-31T14:07:40.560 回答
2

c此处未初始化:

int c;

所以它有一个不确定的值,在你的情况下,因为你想c成为你的系列的总和,所以将它初始化为0

int c = 0 ;

在编译器上启用警告应该已经发现了这一点,使用-Wallwithclang会给我以下警告:

warning: variable 'c' is uninitialized when used here [-Wuninitialized]
  c+=i;
  ^
于 2013-10-31T14:08:46.777 回答