for loop
루프를 실행합니다.
while 루프 의 짧은 형태로 사용됩니다.
목차 |
구문
attr-spec-seq
(C23부터)
(선택적)
for
(
init-clause
;
cond-expression
;
iteration-expression
)
loop-statement
|
|||||||||
설명
다음과 같이 동작합니다:
- init-clause 는 표현식일 수 있습니다 또는 선언일 수 있습니다 (C99부터) .
-
- init-clause 인 표현식은 cond-expression 의 첫 번째 평가 전에 한 번만 평가되며, 그 결과는 폐기됩니다.
|
(C99부터) |
- cond-expression 은 루프 본문 이전에 평가됩니다. 표현식의 결과가 0이면 루프 문이 즉시 종료됩니다.
- iteration-expression 은 루프 본문 이후에 평가되며 그 결과는 버려집니다. iteration-expression 평가 후 제어는 cond-expression 으로 이동합니다.
init-clause , cond-expression , 그리고 iteration-expression 은 모두 선택 사항입니다. 만약 cond-expression 이 생략되면, 0이 아닌 정수 상수로 대체되어 루프를 무한하게 만듭니다:
for(;;) { printf("무한 루프!"); }
loop-statement 는 선택 사항이 아니지만, 널 문장일 수 있습니다:
for(int n = 0; n < 10; ++n, printf("%d\n", n)) ; // 널 문장
루프 실행을 특정 지점에서 종료해야 하는 경우, break statement 를 loop-statement 내 어디에서나 사용할 수 있습니다.
continue 문 은 loop-statement 내 어디에서나 사용되면 제어를 iteration-expression 으로 이동시킵니다.
관찰 가능한 동작(I/O, volatile 접근, atomic 또는 동기화 연산)이 없는 무한 루프를 가진 프로그램은 cond-expression , iteration-expression , 또는 loop-statement 어느 부분에서도 해당 동작이 없을 경우 정의되지 않은 행동을 가집니다. 이는 컴파일러가 종료된다는 것을 증명하지 않고도 모든 관찰 불가능한 루프를 최적화하여 제거할 수 있도록 합니다. 유일한 예외는 cond-expression 이 생략되었거나 상수 표현식인 루프입니다; for ( ;; ) 는 항상 무한 루프입니다.
|
다른 모든 선택 및 반복문과 마찬가지로, for 문은 블록 범위 를 설정합니다: init-clause , cond-expression , 또는 iteration-expression 에서 도입된 모든 식별자는 loop-statement 이후에 범위를 벗어납니다. |
(C99부터) |
|
attr-spec-seq
는
attributes
의 선택적 목록으로,
|
(C23부터) |
키워드
참고 사항
loop-statement 으로 사용된 표현식 문은 C++과 달리 init-clause 의 범위와 구분되는 자체 블록 범위를 설정합니다.
for (int i = 0; ; ) { long i = 1; // 유효한 C, 유효하지 않은 C++ // ... }
루프 본문으로 진입하는 것은 goto 를 사용하여 가능합니다. 이러한 방식으로 루프에 진입할 때, init-clause 와 cond-expression 는 실행되지 않습니다. (만약 제어가 루프 본문의 끝에 도달하면, cond-expression 의 실행을 포함한 반복이 발생할 수 있습니다.)
예제
가능한 출력:
Array filled! 1 0 1 1 1 1 0 0
참조문헌
- C17 표준 (ISO/IEC 9899:2018):
-
- 6.8.5.3 for 문 (p: 110)
- C11 표준 (ISO/IEC 9899:2011):
-
- 6.8.5.3 for 문 (p: 151)
- C99 표준 (ISO/IEC 9899:1999):
-
- 6.8.5.3 for 문 (p: 136)
- C89/C90 표준 (ISO/IEC 9899:1990):
-
- 3.6.5.3 for 문
참고 항목
|
C++ 문서
for
for
루프
|