본문 바로가기

Language/C

for 끝에 세미콜론 (;) 을 찍으면?


일단 6.0 에서 확인해본 결과 에러는 아니다.ㅡㅡ;

이전에 이것때문에 선배가 2시간 동안 디버그를 해준적이 있었는데...

오늘 이걸 또 볼 줄이야...

Test 해본결과(Visual Stdio 6.0 기준)

void main()
{
 int i = 0;

 for(i = 100; i > 20; i--);

 printf("%d\n",i);
}

이 코드를 실행하면 i 는 20의 값을 같는다. 한마디로 for 밑의 라인을 하나도 실행하지 않고 오로지 for 함수 한라인만 실행하는 것이다. i 의 초기값 100을 시작으로 조건식을 거쳐 바로 i-- 를 실행 그리고 다시 조건식 다시 i-- 를 실행 이걸 조건식에 부합될때 까지 반복한다.

결과는 i = 20 으로 나온다.

만일 세미콜론을 풀게되면?

printf() 가 80번 실행된다. 한마디로 for 밑에 딸려있는 라인을 계속 실행하게 된다.

물론 2005 이상에서 Test를 해봐야 겠지만 지금 6.0 만 있으니 일단 패스...

속도는 몰겠고 .... 간단하지만 당황하게 만들 수 있는 문법이니 체크!