2014-01-09 38 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

看起來像這樣是你的新知識:) –

相關問題