해당 글은 "열혈 C 프로그래밍" 책을 바탕으로 작성되었습니다.
💡 말 그대로 반복해주는 구문! 조건이 성립하지 않을 때 탈출한다. (건너뜀)
반복문의 종류
while 문
- 특정 조건을 주고 그 조건을 만족하는 동안, 특정 영역을 계속해서 반복하는 구조임.
- while 문의 while 문처럼 중첩해서 사용도 가능 (ex. 구구단 만들 때)
while (num < 3) { // 반복의 조건은 3
printf("Hello World! \\n");
num++; // num 이 1 증가 -> 반복 조건을 무너뜨리기 위한 최소한의 연산 => 이게 없으면 '무한루프' 발생
}
do~while 문
- while 문과의 차이점은 '반복의 조건을 검사하는 시점'에 있음. 이는 반복 영역을 최소한 한 번은 실행하는 구조임.
- 사용자가 값을 입력해야 조건이 성립할 때와 같이 최소 한 번은 실행되어야 하는 경우 유용하게 사용됨.
do {
printf("Hello World! \\n");
num++;
} while (num < 3);
for 문
- 반복문 중에서 가장 많이 사용되는 반복문으로, 반복을 위한 변수의 선언과 반복 조건을 '거짓'으로 만들기 위한 값의 증가 및 감소 연산 등을 하나로 묶은 것.
- 반복의 횟수가 딱 정해진 경우는 for 문이 최선이며, 사용자의 값 입력을 기다리는 상황이면 while 문이 더 자연스러울 수도 있음.
- while 문과 마찬가지로 for 문의 for 문처럼 중첩해서 사용 가능
/* while 문 구성 */
int num = 0; // 1) 반복을 위한 변수의 선언
while (num < 3) { // 2) 반복의 조건
printf("Hi");
num++; // 3) 조건을 '거짓'으로 만들기 위한 연산
}
/* for 문 구성 ⇒ 초기식, 조건식, 증감식이 한꺼번에 구성됨. */
for (int num = 0; num < 3; num++) {
printf("Hi");
}
반복문의 생략과 탈출
break
- 반복문을 탈출할 때 (빠져나올 때) 사용하는 키워드로, 실행 시 break 문을 가장 가까이서 감싸고 있는 '반복문' 하나를 빠져나오게 됨.
- 이는 무한루프를 빠려자가는 용도로도 사용됨.
int main(void) {
while (1) {
if (x > 20)
break; // while 문 탈출
}
}
continue
- break 문과 마찬가지로 반복문 안에 삽입이 되며, 실행중인 위치에 상관없이 반복문의 조건검사 위치로 이동함. 조건이 여전히 '참'이라면 반복 영역을 다시 실행함.
int main(void) {
while (1) {
if (x/2 == 1)
continue; // 조건검사로 이동
}
}
더 알아가기
- 반복의 대상을 지정할 때 사용하는 중괄호는 반복의 대상이 한 문장으로 이뤄진 경우 생략이 가능함.
- 반복 조건이 와야 할 위치에 0이 아닌 값 ('참'을 의미하는 값) 이 올 결우에도 무한루프가 발생함.
- 특정 기능을 완성하기 위해 필요에 의해서 무한루프를 구성하기도 함. (ex. break 문과 함께할 때)
- 아직 일부 C 컴파일러는 '초기식' 위치에서 변수 선언을 허용하지 않고 있음. 이럴 경우 따로 미리 선언하기!