공룡호가 사는 세상 이야기

for (expr1; expr2; expr3)
statement;
next statement;

굉장히 많이 쓰는 루프문이라서, 전부 알고 있다고 생각했는데 그것이 아니었다. expr1의 값으로 for루프를 최소 한번은 실행한다고 생각했는데, 그것이 아니었다.
내가 알고 있던 것은 expr1로 statement를 실행한 다음 expr3 을 수행하고, expr2 수식을 평가하여 참이면 다시 루프를 수행하는 것이었는데, 시간이 지나면서 착각을 일으킨 것일까.
expr1이 expr2의 조건을 만족하지 않는다면, 단 한번도 실행되지 않는다.

여기서 expr2를 사용하고 for루프의 몸체에 continue 문장이 없다면, 이것은 다음과 완전히 동일하다.

expr1;
while (expr2) {
statement;
expr3;
}
next statement;

보라, expr1은 먼저 expr2를 평가하고, 만족하지 않으면 next statement로 바로 이동하는 것을 볼 수가 있다.

어렵지 않게 찾아낼 수 있던 것이었지만, 반복루프와 함수 안에 갖혀서 찾아낼 수가 없었다.... 덕분에 하루종일 삽질했다. -_-
기본적인, 함수와 키워드의 사용에 익숙해 지다 보면, 내가 사용하는 방법이 전부이며 그것이 반드시 맞을 것이라는 착각에 빠지게 된다.
에러를 찾을 수 없을 때, 프로그래머는 첫줄부터 다시 읽어 나가지만 자신의 착각속에서 이루어지는 디버그는 의미가 없다.

'프로그래밍' 카테고리의 다른 글

ACM 10127 ONES  (0) 2006.01.16
GetTickCount() Function  (1) 2006.01.16
ACM 10110 Light, More Light  (0) 2006.01.13
ACM 100 3n+1 Problem  (2) 2006.01.10
오각수 구하기  (0) 2006.01.10