개요
제어문 혹은 점프문이라고 불리는 이 문법은 코드의 특정 부분을 건너뛰고, 루프를 조기에 종료하는 등 프로그램의 흐름을 제어하는데 중요한 역할을 한다.
오늘은 이 제어문 'break', 'continue', 'goto', 'return' 에 대해서 알아보자
break 문
'break' 문은 반복문이나 조건문 switch문을 즉시 종료하는 데 사용된다. 코드는 이 'break'를 만나면 그 흐름을 멈추고 그 코드블럭을 빠져나간다.
// 예시
#include <stdio.h>
int main() {
// 0부터 9까지의 숫자를 출력합니다.
for (int i = 0; i < 10; i++) {
// 'i'가 5면 'break'를 실행하며 루프를 종료시킵니다.
if (i == 5) {
break;
}
printf("Iteration %d\n", i);
}
printf("Loop terminated at iteration 5.\n");
return 0;
}
break문은 위처럼 특정 조건이 충족될때 반복을 종료하거나 'switch'문의 case를 종료할때 사용한다.
continue 문
' continue' 문은 루프의 현재 반복문의 이후 코드를 건너뛰고 다음 반복으로 넘어간다. 즉 반복문의 이후 흐름을 생략하고 다시 조건식으로 넘어간다는 것이다.
// 예시
#include <stdio.h>
int main() {
// 0부터 9까지 숫자를 출력합니다.
for (int i = 0; i < 10; i++) {
// 'i'가 5면 나머지 코드를 건너뛰고 다음 반복으로 넘어갑니다.
if (i == 5) {
continue;
}
printf("Iteration %d\n", i);
}
return 0;
}
continue문은 조건에 충족되거나, 혹은 충족되지 않아 특정 반복을 건너뛰게할때 사용한다.
goto 문
'goto' 문은 동일한 함수내에서 레이블이 지정된 코드로 점프하는 기능을 가졌다.
#include <stdio.h>
int main() {
int i = 0;
// 0부터 9까지의 숫자를 출력합니다.
while (i < 10) {
// 'i'가 5가 됐을때 'goto'문을 통해 'skip'라벨로 이동합니다.
if (i == 5) {
goto skip;
}
printf("Iteration %d\n", i);
i++;
}
skip: // goto를 통해 이 라벨로 이동
printf("Skipped iteration 5\n");
return 0;
}
보통 코드는 위에서 아래로, 좌에서 우로 흘러간다. 하지만 이 goto문은 그 흐름을 무시하고 무조건 문으로 점프하는 기능을 가졌다. 가독성을 해치며 다른사람이 볼때 코드의 흐름을 이해하기 어려워진다. 따라서 잘 사용되지않는 문법이다.
return 문
'return' 문은 함수를 종료하고 값을 반환할 수 있다. 함수의 끝에 도달했을때 함수를 종료하고 값을 반환하는데 사용된다.
아마 이 return 문은 익숙할것이다. 처음 c언어를 배웠을때 'int main()' 의 마지막에 'return 0' 를 봤기 때문이다. (사실 없어도 돌아가지만 관행상 넣어주는 편이다.)
#include <stdio.h>
// "Hello World" 출력 후 프로그램을 0값을 반환하며 끝낸다.
int main() {
printf("Hello World!");
return 0;
}
마치며
제어문은 동적이고 유연한 방식으로 코드 흐름을 제어한다. 각 제어문의 사용 방법을 이해한다면 보다 효율적이고 최적화된 프로그램을 작성하는데 도움이 될 것이다.