while loop
expression 의 값이 0이 될 때까지 statement 를 반복적으로 실행합니다. 각 반복 전에 조건 검사가 수행됩니다.
목차 |
구문
attr-spec-seq
(선택 사항)
while (
expression
)
statement
|
|||||||||
| expression | - | 표현식 중 스칼라 타입 의 모든 표현식. 이 표현식은 각 반복 전에 평가되며, 0과 비교하여 같으면 루프가 종료됩니다. |
| statement | - | 구문 중 모든 구문으로, 일반적으로 복합 구문이며 루프의 본문 역할을 합니다. |
| attr-spec-seq | - | (C23) 속성 의 선택적 목록으로, 루프 구문에 적용됩니다. |
설명
A
while
문은
statement
(또한
루프 본문
이라고 함)이
expression
(또한
제어 표현식
이라고 함)이 0과 같을 때까지 반복적으로 실행되도록 합니다. 이 반복은 루프 본문이 정상적으로 진입되었는지 또는
goto
를 통해
statement
의 중간으로 진입했는지에 관계없이 발생합니다.
expression 의 평가는 statement 의 각 실행 전에 발생합니다(goto로 진입한 경우 제외). 제어식이 루프 본문 이후에 평가되어야 하는 경우, do-while 루프 를 사용할 수 있습니다.
루프 실행을 특정 지점에서 종료해야 하는 경우, break statement 를 종료 문으로 사용할 수 있습니다.
루프 실행을 루프 본문 끝에서 계속해야 하는 경우, continue 문 을 단축키로 사용할 수 있습니다.
관찰 가능한 동작(I/O, volatile 접근, atomic 또는 동기화 연산)이 없는 무한 루프를 가진 프로그램은 해당 루프의 statement 나 expression 어느 부분에서도 관찰 가능한 동작이 없는 경우 미정의 동작을 가집니다. 이는 컴파일러가 종료된다는 것을 증명하지 않고도 모든 관찰 불가능한 루프를 최적화하여 제거할 수 있도록 합니다. 유일한 예외는 expression 이 상수 표현식인 루프입니다; while ( true ) 는 항상 무한 루프입니다.
|
다른 모든 선택 및 반복문과 마찬가지로, while 문은 블록 범위 를 설정합니다: 표현식 에서 도입된 모든 식별자는 문장 이후에 범위를 벗어납니다. |
(C99부터) |
참고 사항
부울 및 포인터 표현식은 종종 루프 제어 표현식으로 사용됩니다. 부울 값
false
와 모든 포인터 타입의 null 포인터 값은 0과 동일하게 비교됩니다.
키워드
예제
#include <stdio.h> #include <stdlib.h> #include <string.h> enum { SIZE = 8 }; int main(void) { // 단순한 예제 int array[SIZE], n = 0; while(n < SIZE) array[n++] = rand() % 2; puts("Array filled!"); n = 0; while(n < SIZE) printf("%d ", array[n++]); printf("\n"); // 고전적인 strcpy() 구현 // (널 종료 문자열을 src에서 dst로 복사) char src[] = "Hello, world", dst[sizeof src], *p = dst, *q = src; while((*p++ = *q++)) // 이중 괄호 (엄밀히 필요하지 않음) // 경고를 억제하기 위해 사용되며, 이 코드가 의도적으로 // (비교가 아닌) 할당임을 보장하고, 그 결과를 // 진리값으로 사용함 ; // 널 문장 puts(dst); }
출력:
Array filled! 1 0 1 1 1 1 0 0 Hello, world
참고문헌
- C17 표준 (ISO/IEC 9899:2018):
-
- 6.8.5.1 The while 문 (p: 109)
- C11 표준 (ISO/IEC 9899:2011):
-
- 6.8.5.1 The while statement (p: 151)
- C99 표준 (ISO/IEC 9899:1999):
-
- 6.8.5.1 The while 문 (p: 136)
- C89/C90 표준 (ISO/IEC 9899:1990):
-
- 3.6.5.1 while 문
참고 항목
|
C++ 문서
for
while
루프
|