2014-01-09 22 views
-1

我想得到前五个自然数的总和,但是在这个代码中有什么不对,需要找到误会?帮助前五个自然数的总和

#include <iostream> 
#include <cstdlib> 

using namespace std; 

int main() 
{ 
    int i = 1, thesum; 

    while(i <= 5) 
    { 
     thesum += i; 
     i++; 
    } 

    cout << thesum; 

    return 0; 
} 
+1

什么是不工作?输出是不同的?它不会编译?它崩溃?由于古怪的压痕错过了一个右大括号? – chris

+3

初始化'thesum = 0' – Matt

+0

谢谢老兄:)。 – user3179519

回答

4

您还没有初始化变量thesum变量。初始化为0

int i = 1, thesum = 0; 

否则它会调用未定义行为

+0

非常感谢! :) – user3179519

2

因为已经指出你没有初始化局部变量thesum。所以它有一些武断的价值。 也没有任何需要包含标头<cstdlib>,因为没有使用它的任何声明。 由于变量i不在循环外部使用,因此最好使其成为循环的局部变量。

所以我会重写程序通过以下方式

#include <iostream> 
using namespace std; 

int main() 
{ 
    const int N = 5; 
    int theSum = 0; 

    for (int i = 0; i < N; i++) theSum += i + 1; 

    cout << "The sum of first " << N << " natural numbers is " << theSum << endl;  

    return 0; 
} 
+0

它被称为“未指定的值”,更糟的是,从UB读取它(这是'+ ='所要求的)。最好将未初始化的对象视为没有任何价值。 –

+0

我虽然会说一些新的东西... –

+0

看起来像这样是你的新知识:) –

相关问题