반응형

break문과 continue문

 

 

지금까지 for, while, do ~ while 문을 이용하여 특정 구문을 반복하여 실행할 수 있었고

 

무한히 반복하여 수행할 수 있는 무한 반복문 또한 학습했다.

 

그렇다면 이제 특정한 조건에 대해 반복문을 제어할 수 있는 break 구문과 continue 구문을 배워보자

 

break 구문 continue 구문을 이용하면 반복문을 멈추거나 

 

특정 조건을 만족할 때 반복문을 실행하지 않고 통과하게 할 수도 있다.

 

-

 

※ break ※

 

 

break 구문 반복문을 멈추는 구문이다.

 

일반적으로 특정한 조건일 때 반복문을 멈추기 때문에 주로 함께 사용되는 구문이 if 문이다.

 

아래의 코드를 봐보자.

 

-

 

test20.c
0.00MB

 

 

 

-

 

위 코드는 반복 제어 조건이 명시되지 않은 무한 반복문을 사용한다.

 

하지만

 

11 행에서 조건을 확인하여 만약 변수 i의 값이 2일 경우에는 break 문을 사용하여 반복문을 정지한다.

 

-

 

break 문을 사용할 때 주의할 점이 있는데

 

바로 break 문은 호출되는 반복문 한 개에 대해서 반복문을 정지하게 된다는 것이다.

 

만약 내부적으로 중첩하여 여러 개의 반복문을 사용할 때 break 문을 호출하면

 

break 문을 호출하는 해당 반복문에 대해서만 반복을 정지하고 지속적으로 실행되게 된다.

 

아래의 예제를 보면 이와 같은 for 문의 특징을 잘 보여주고 있다.

 

-

 

test21.c
0.00MB

 

 

 

-

 

위 코드는 구구단을 출력하는 예제 2단부터 5단까지 출력하고 있다.

 

구구단을 출력하기 위해 2개의 for 문이 중첩하여 사용되었으며

 

출력하는 순서

 

"2 * 1 = 2", "3 * 1 = 3", "4 * 1 = 4", "5 * 1 = 5"...등으로 출력하게 된다.

 

하지만 

 

제일 안쪽에 있는 for 문(9행 ~ 13행) 내에서 변수 i의 값이 2일 경우 해당 반복문을 정지하고 있다.

 

따라서 제일 처음 "2 * 2 = 4"라는 내용이 실행되지 않고 반복문이 멈추게 된다.

 

2단에서 반복문이 멈췄기 때문에 이후 3단과 4단 5단에서 2를 곱하는 내용은 실행되지 않는다.

 

하지만

 

break  문 호출되는 반복문만 정지하기 때문에 밖에 있는 반복문(7행 ~ 15행)은 여전히 실행되어

 

"2 * 3 = 6"부터 안쪽에 있는 반복문이 다시 실행되게 된다.

 

break 문 for 문에 대해서만 실습했지만 while 및 do ~ while 문 등에서도 동일하게 적용할 수 있다.

 

추가 설명은 생략하도록 한다.

 

-

 

※ continue 

 

 

break 문 호출되는 반복문을 더는 실행하지 않고 완전히 멈춘 후에 반복문을 탈출하는 구문이다.

 

반면에 continue 문의 경우 호출되는 시점 이후의 반복 구문을 실행하지 않고 

 

지속적으로 반복문을 실행하는 것이다.

 

맨 위의 test20.c의 코드를 수정하여 continue 구문을 적용하여 break 구문과 어떻게 다른지

 

아래의 코드에서 비교해보자.

 

-

 

test22.c
0.00MB

 

 

 

-

 

위 코드의 내용을 보면 9행에서 변수 i의 값이 2일 경우 continue 구문을 호출하여

 

이후의 내용(11행)을 수행하지 않고 통과하도록 하고 있다.

 

따라서 위의 실행 결과에 나와 알다시피

 

"Hello!!! World~~ [2]"라는 내용이 출력되지 않았을 뿐 여전히 for 문의 반복문이 실행되고 있다.

 

만약 9행에서 continue 대신 break 문을 호출하면 완전히 반복문이 정지되어 더는 반복 실행이 되지 않았을 것이다.

반응형

'시작하지 말았어야 했던 것 > C언어 기본 문법' 카테고리의 다른 글

12. 문자와 문자열  (0) 2021.02.01
11. 배열  (0) 2021.02.01
8. 반복문  (0) 2021.02.01
7. 조건문  (0) 2021.02.01
6. 연산자(4)  (0) 2021.02.01

+ Recent posts