안녕하세요 길벗 수험서 운영팀입니다.
코드를 보실 때는 항상 주의깊게 확인하셔야 합니다.
해당 for 반복문은 하위 코드가 존재하지 않습니다.
for문의 하위 코드가 되려면
for(i=1; i<=5; ++i)
hap += i;
가 되어야 합니다. for 문 뒤에 세미콜론(;)이 존재하면 안되며, 아래 코드는 해당 구문에 속해 있다는 의미로 여백이 있어야 합니다.
하지만 해당 코드의 경우
for(i=1; i<=5; ++i);
hap += i;
이므로, for문은 혼자 1부터 5까지 반복하고 마지막에 +1을 더해 i 혼자 6이 되며 종료됩니다.
행복한 하루 되세요 :)
-
관리자2018-12-17 11:07:06
안녕하세요 길벗 수험서 운영팀입니다.
코드를 보실 때는 항상 주의깊게 확인하셔야 합니다.
해당 for 반복문은 하위 코드가 존재하지 않습니다.
for문의 하위 코드가 되려면
for(i=1; i<=5; ++i)
hap += i;
가 되어야 합니다. for 문 뒤에 세미콜론(;)이 존재하면 안되며, 아래 코드는 해당 구문에 속해 있다는 의미로 여백이 있어야 합니다.
하지만 해당 코드의 경우
for(i=1; i<=5; ++i);
hap += i;
이므로, for문은 혼자 1부터 5까지 반복하고 마지막에 +1을 더해 i 혼자 6이 되며 종료됩니다.
행복한 하루 되세요 :)
-
관리자2018-12-18 11:18:23
안녕하세요 길벗 수험서 운영팀입니다.
하위 코드라고 함은 해당 명령어에 속한 코드를 의미합니다.
책 앞의 반복문이나 조건문같은 명령어들은 하위 코드를 가질 수 있음을 내포하고 있습니다.
if (3>1)
printf("참");
else
printf("거짓");
위의 코드에서 if는 하위코드로 printf를 가집니다. else는 if의 부가적인 코드로 거짓을 출력하는 printf를 하위코드로 갖고 있죠. 구분은 세미콜론(;)과 앞의 여백으로 구분합니다.
for문도 마찬가지 입니다.
for (i=1; i<=5; i++)
printf("%d",i);
위와 같이 출력했을 때, 1부터 5까지 수가 차례대로 출력되게 됩니다. for문이 printf를 하위코드로 갖고 있기 때문이죠. 이와 반대로
for (i=1; i<=5; i++);
printf("%d",i);
위의 경우 for문은 세미콜론(;)으로 종료됨으로써, 하위 코드를 갖고 있지 않고 끝나 버렸으므로, 혼자 5까지 반복한 뒤 마지막에 1을 더해 i는 6을 갖고 종료됩니다. 즉, printf로 6만 출력되고 종료되게 되죠.
마지막에 +1이 되는 이유는 for문의 각 인자들의 실행 순서를 이해하시면 됩니다.
for(①; ②; ③) {
④;
}
위의 for문이 ④를 3회 반복한다고 가정했을 때, 순서는
1회 : ①, ②(조건 참), ④, ③
2회 : ②(조건 참), ④, ③
3회 : ②(조건 참), ④, ③
마지막 : ②(조건 거짓) <탈출>
이와 같이 되게 때문에 ③이 3번 수행되면서 만약 for(i=1;i<=3;i++) 이었다면 i는 4가 되고 끝나게 되죠.
행복한 하루 되세요.
-
*2018-12-18 11:06:27
여기서 하위코드 개념을 잘 모르겠습니다 ㅎㅎ
하위코드가 아니면 왜 혼자 반복하고 5에서 +1을 더하는지 모르겠습니다!