C언어 break, continue로 반복문, 조건문 제어하기

C언어 break문은 반복문, switch 조건문을 탈출합니다. continue문은 잔여 코드를 건너뛰고 반복문의 조건식 부분으로 돌아갑니다. return문은 소속 함수 블록을 탈출합니다.

C언어 제어문

C언어의 제어문은 큰 범위에서는 반복문, 조건문, break문, continue문을 모두 지칭합니다. 작은 범위에서는 break문과 continue문을 의미합니다. C언어의 break, continue 제어문은 반복문과 조건문에 일종의 필터링 기능을 부여합니다.

기호 역할
break 소속 코드 블록 탈출
continue 잔여 코드 블록 무시 및 반복문 조건식으로 회기
return 소속 함수 탈출

break 제어문

C언어 break 제어문은 반복문에 삽입시 break 조건이 맞으면 반복문 코드 블록을 바로 탈출합니다.

#include<stdio.h>
void main() {
	int i;

	for (i = 0; i <= 100; i++)
	{
		if (i == 31) //i가 31과 같지 않을 경우 반복문을 계속 실행
			break; //i가 31과 같아질 경우 for문을 탈출

		printf("%d \n", i);
	}
}

결과

0~100까지 숫자 출력에서 i == 31break를 생성했으므로 0~30까지만 출력되고 반복문이 종료됩니다.

0
1
...중략
29
30

break문은 switch 조건문에서 해당 조건문 블록을 빠져나갈 때 사용됩니다.

#include<stdio.h>
void main() {
	int x = 2;
	int y;

	switch (x)
	{
		case 1 :
		{
			y = 10;
			printf("y는 %d", y);
		}
		break; //잔여 case 문을 무시하고 switch 문을 빠져나갑니다.

		case 2 :
		{
			y = 20;
			printf("y는 %d", y);
		}
		break; //잔여 case 문을 무시하고 switch 문을 빠져나갑니다.

		default :
		{
			y = 90;
			printf("y는 %d", y);
		}

	}
}

결과

y는 20

예제

continue 제어문

C언어 continue 제어문은 코드의 잔여 블록을 무시하고, 반복문의 조건식이 있는 곳으로 돌아갑니다.

#include<stdio.h>
void main() {
	int i;

	for (i = 0; i <= 10; i++) { if (i > 3)
			continue; //i가 3보다 큰 정수가 되면 하단의 printf를 건너뛰고 for (조건식)으로 돌아갑니다.

		printf("%d \n", i);
	}
}

결과

0~10을 한 줄씩 출력하는 반복문에서 i3보다 크면 하단의 출력 블록이 무시되고, 조건식으로 계속 돌아갑니다. i10이 되면 종료됩니다.

0
1
2
3

continue문은 continue보다 앞에 있는 코드 블록에는 관여하지 않습니다.

#include<stdio.h>
void main() {
	int i;

	for (i = 0; i <= 10; i++) { printf("영향 안받음 \n"); //continue 보다 위에 있는 수식은 continue와 무관하게 실행됩니다. if (i > 3)
			continue; //i가 3보다 큰 정수가 되면 하단의 printf를 건너뛰고 for (조건식)으로 돌아갑니다.

		printf("%d \n", i);
	}
}

결과

continue보다 위에 있는 수식은 건너뛰기 영향을 받지 않으므로 정상적인 10회 반복 출력이 발생합니다.

영향 안받음
0
영향 안받음
1
영향 안받음
2
영향 안받음
3
영향 안받음
영향 안받음
영향 안받음
영향 안받음
영향 안받음
영향 안받음
영향 안받음

return문

C언어 return문은 소속된 함수 블록을 탈출합니다. 현재 코드는 main() 함수에 소속되었으므로 return을 만나면 main() 함수 자체를 빠져나갑니다.

#include<stdio.h>
void main() {
	int i;

	for (i = 0; i <= 10; i++) { if (i > 3)
			return; //main () 함수 자체를 빠져나갑니다.

		printf("%d \n", i);
	}
}

결과

0
1
2
3

break문과 결과가 비슷해 보이지만, break문은 소속된 반복문 또는 조건문 블록 범위만 탈출하며, 함수의 소속은 유지합니다.