Skip to content

문제 10 · continue와 무한 루프

문제 10 [2점]

아래 코드의 num, sum은 어떤 값을 갖는지 쓰시오.

cpp
int num = 0, sum = 0;
while (num < 15) {
    if (!((num % 2 == 0) && (num % 3 == 0)))
        continue;
    sum += num;
    num++;
}
풀이 및 해설

num++continue보다 뒤에 있는 것이 함정입니다.

1) num = 0

  • 조건: !((0%2==0) && (0%3==0)) = !(true && true) = !true = falsecontinue 안 함
  • sum += 0sum = 0, num++num = 1

2) num = 1

  • 조건: !((1%2==0) && (1%3==0)) = !(false && false) = !false = truecontinue
  • continue가 실행되면 num++에 도달하지 못하고 num은 계속 1

이후 매 반복마다 num1에 갇혀 조건이 항상 참이 되어 continue만 반복됩니다. 즉 무한 루프에 빠지며 프로그램이 끝나지 않습니다.

무한 루프num=1,sum=0 에서 멈추지 않음

올바르게 값을 누적하려면 num++continue보다 앞에 두거나 for문을 사용해야 합니다.

👉 실습(C++)에서 확인하기

PDF