코딩 연습문제로 짝수의 합 문제에서
조회수 739회
int solution(int n) {
int sum;
for ( ; n > 1; n--) {
if (n % 2 == 0) {
sum += n;
}
}
return sum;
} 이렇게 작성했는데 컴파일러사이트랑 visual studio에선 잘 돌아가는데 여기선 안돌아갑니다. 혹시 여기에 문제점이나 고칠 점이 있나요? 디버거를 돌려봤는데 정상적으로 작동하는데 이상한 주솟값같은게 계속 뜨네요.
1 답변
-
아래와 같이 고치셔야 합니다.
int sum=0;
sum은 solution 함수의 지역변수입니다. 지역변수는 반드시 초기화를 해줘야 합니다.
대부분의 컴파일러는 전역변수, 정적변수는 초기화를 하지 않으면 변수의 논리적 초기값(일반적으로 0 또는 0.0 등)으로 초기화를 해줍니다만. 지역변수는 초기화 안해주면 기본생성자가 없는 일반 변수의 경우, 메모리의 쓰레기값으로 초기화됩니다.
결론: 지역변수는 반드시 초기화하고, 전역변수, 정적변수도 초기화하는 것이 좋습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력