|
kevin 님이 쓰신 글 :
: #include<stdio.h>
:
: int main(void)
: {
: for (putchar('1'); putchar('2'); putchar('3'))
: putchar('4');
:
: return 0;
: }
:
: 얘기 무슨 뜻인가요?
: for문은 첫번째 항에 초기값 ; 조건 이 나오는데...첫번째 항을 항상 1이라 해도..
:
: 조건문이 2??
:
: 설명 부탁드립니다.
for(A ; B ;C)
{
D;
}
for 문이 위와 같을 때 수행 순서는
AB
DCB
DCB
DCB
물론 B의 결과가 0(false)이면 for문을 그만 돕니다.
A,C에는 어떤 식이든(함수 호출 포함) 가능합니다.
B에는 bool로 형변환 가능한 모든 식과 bool로 형변환 가능한 결과를 반환하는 함수호출이 가능합니다(또는 아예 생략 가능).
참고로, 수에서 0이 false고 나머지는 true입니다.
마지막으로, 님이 제시한 코드를 보면,
for (putchar('1'); putchar('2'); putchar('3'))
putchar('4');
putchar(ch)는 오류가 없다면 ch를 반환합니다.
따라서,각 구역의 결과는 A='1', B='2' , C='3' 입니다.
putchar('1'); => 1 출력
putchar('2'); => 2 출력 //'2'는 true에 해당하므로 계속
putchar('4'); => 4 출력
putchar('3'); => 3 출력
putchar('2'); => 2 출력 //'2'는 true에 해당하므로 계속
putchar('4'); => 4 출력
putchar('3'); => 3 출력
putchar('2'); => 2 출력 //'2'는 true에 해당하므로 계속
putchar('4'); => 4 출력
putchar('3'); => 3 출력
putchar('2'); => 2 출력 //'2'는 true에 해당하므로 계속
putchar('4'); => 4 출력
putchar('3'); => 3 출력
putchar('2'); => 2 출력 //'2'는 true에 해당하므로 계속
putchar('4'); => 4 출력
putchar('3'); => 3 출력
putchar('2'); => 2 출력 //'2'는 true에 해당하므로 계속
.
.
.
끝없이 계속
|