코딩 연습문제로 짝수의 합 문제에서

조회수 837회

int solution(int n) {

int sum;
for (  ; n > 1; n--) {
    if (n % 2 == 0) {
        sum += n;
    }
}
return sum;

} 이렇게 작성했는데 컴파일러사이트랑 visual studio에선 잘 돌아가는데 여기선 안돌아갑니다. 혹시 여기에 문제점이나 고칠 점이 있나요? 디버거를 돌려봤는데 정상적으로 작동하는데 이상한 주솟값같은게 계속 뜨네요.

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    아래와 같이 고치셔야 합니다.

    int sum=0;
    

    sum은 solution 함수의 지역변수입니다. 지역변수는 반드시 초기화를 해줘야 합니다.

    대부분의 컴파일러는 전역변수, 정적변수는 초기화를 하지 않으면 변수의 논리적 초기값(일반적으로 0 또는 0.0 등)으로 초기화를 해줍니다만. 지역변수는 초기화 안해주면 기본생성자가 없는 일반 변수의 경우, 메모리의 쓰레기값으로 초기화됩니다.

    결론: 지역변수는 반드시 초기화하고, 전역변수, 정적변수도 초기화하는 것이 좋습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)