평소에 들었던 의문점이 하나 있어서 질문을 올렸는데, 멘토분께서 답변을 해주셨다.
그래서, ' 아직 내 공부가 부족하구나...' 하는 생각으로 break와 continue에 관해 정리해보려고 한다.
기본적으로 break와 continue 둘다 반복문을 제어하기 위해서 사용한다. 그렇다면, 둘은 어떻게 다르고, 어떻게 사용할 수 있을까??
break는 반복문을 중간에서 멈춰야할 때 사용한다.
밑의 예시를 보자!
j가 5일때, break를 걸자, 반복문을 빠져나왔다. 이렇게 특정 상황에서 반복문을 빠져나와야할 때, 사용 가능하다.
그런데, 여기서 이런 의문점이 들었다.
반복문을 빠져나온다고 하는데, 그렇다면, 반복문이 여러개 있으면, break 한 번으로 그 모든 반복문을 다 빠져나오는 건가??
예시를 통해 확인해보자!!
편의상 최상위 while을 조부모라고 부르고, break를 덮고 있는 while문을 부모라고 부르겠다.
조부모 반복문은 못 빠져나왔다. 다시 말해서, break로 빠져나올 수있는 반복문은 딱 한 개이다.
반복문이 특정 조건에서만 실행되기를 원할 때, continue를 사용할 수 있다.
즉, 짝수가 되는 상황은 무시하고 진행하라는 의미인데, 좀 더 정확하게는 짝수인 상황에는 밑에꺼 다 무시하고 while문의 맨처음으로 돌아가라는 의미이다.
좀더 정확한 설명을 위해 예시에서 j++의 위치를 바꿔보자!!
이렇게 되면, 무한 루프를 돌게 된다. 왜 그럴까?? 바로 0을 항상 if을 절 참으로 만들기 때문에 continue가 계속 발동하기 때문이다.
continue가 발동하면, 밑에꺼 다 무시하고 다시 while문 맨 처음부터 시행된다. 그래서, j값을 영원히 0이며, 무한 continue가 되는 것이다.
그렇다면, continue 실행 시, 부모와 조부모 반복문이 있다면, continue는 어디서부터 다시 실행되는 것인가?? 조부모?? 부모??
실험을 통해 확인해보자!!
확인 결과, continue가 실행된다고 해도 조부모 반복문의 처음부터 실행되는 것이 아니다. 그저, continue를 감싸고 있는 부모 반복문만 처음부터 다시 실행됨을 알 수있다.