2014-01-09 2 views
-1

첫 번째 5 개의 자연수 합계를 얻고 싶습니다. 그러나이 코드에 뭔가 잘못되어 있으며, 실수를 찾아야합니까? 도움말첫 번째 5 개의 자연수 합계

#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

이게 당신을위한 새로운 지식 인 것 같습니다 :) –

관련 문제