while
loop
조건부로 문장을 반복적으로 실행합니다.
목차 |
구문
attr
(선택 사항)
while (
condition
)
statement
|
|||||||||
| attr | - | (since C++11) 임의의 개수의 attributes |
| condition | - | 하나의 condition |
| statement | - | 하나의 statement (일반적으로 복합문) |
조건
조건은 condition 은 expression 이거나 simple declaration 일 수 있습니다.
|
(C++26부터) |
- 만약 문법적으로 표현식으로 해결될 수 있다면, 표현식으로 취급됩니다. 그렇지 않으면 선언으로 취급됩니다 (구조화된 바인딩 선언이 아닌) (C++26부터) .
제어가 조건에 도달하면, 조건은 값을 산출하며, 이 값은 statement 가 실행될지 여부를 결정하는 데 사용됩니다.
표현식
만약 condition 이 표현식인 경우, 생성되는 값은 해당 표현식이 bool 으로 문맥상 변환된 값입니다. 이 변환이 잘못된 경우, 프로그램은 잘못된 형식입니다.
선언
만약 condition 이 단순 선언인 경우, 반환되는 값은 결정 변수의 값(아래 참조)이 bool 으로 문맥상 변환된 값입니다. 만약 해당 변환이 잘못된 경우, 프로그램은 잘못된 형식입니다.
비구조적 바인딩 선언
선언에는 다음과 같은 제한 사항이 있습니다:
- 구문적으로 다음 형식을 따릅니다:
|
(C++11 이전) |
|
(C++11 이후) |
- 선언자는 함수 나 배열 을 지정할 수 없습니다.
- 타입 지정자 시퀀스 (C++11 이전) 선언 지정자 시퀀스 는 타입 지정자와 constexpr 만 포함할 수 있으며, (C++11 이후) 클래스 나 열거형 을 정의할 수 없습니다.
선언의 결정 변수는 선언된 변수입니다.
구조화된 바인딩 선언선언에는 다음과 같은 제한 사항이 있습니다:
선언의 결정 변수는 선언에 의해 도입된 e 발명 변수입니다. |
(C++26부터) |
설명
A while 문은 다음과 동일합니다
/* label */
:
|
|||||||||
만약 condition 이 선언문인 경우, 해당 루프가 반복될 때마다 선언된 변수가 소멸되고 생성됩니다.
루프가 statement 내에서 종료되어야 하는 경우, break statement 를 종료 문으로 사용할 수 있습니다.
현재 반복을 statement 내에서 종료해야 하는 경우, continue statement 를 단축키로 사용할 수 있습니다.
참고 사항
statement 가 복합 문(compound statement)인지 여부와 관계없이, 이는 항상 블록 범위(block scope) 를 도입합니다. 여기서 선언된 변수들은 루프 본문 내에서만 보이며, 즉
while (--x >= 0) int i; // i가 스코프를 벗어남
와 동일합니다
while (--x >= 0) { int i; } // i가 스코프를 벗어남
C++ 진행 보장 의 일부로서, 사소한 무한 루프 가 아닌 (C++26부터) 관찰 가능한 동작 이 없는 루프가 종료되지 않으면 동작은 정의되지 않음 입니다. 컴파일러는 이러한 루프를 제거할 수 있습니다.
키워드
예제
#include <iostream> int main() { // 단일 문장을 가진 while 루프 int i = 0; while (i < 10) i++; std::cout << i << '\n'; // 복합 문장을 가진 while 루프 int j = 2; while (j < 9) { std::cout << j << ' '; j += 2; } std::cout << '\n'; // 선언 조건을 가진 while 루프 char cstr[] = "Hello"; int k = 0; while (char c = cstr[k++]) std::cout << c; std::cout << '\n'; }
출력:
10 2 4 6 8 Hello
참고 항목
|
C 문서
for
while
|