반복문을 나오는 방법으로 break문을 알아봤었다. 하지만 break문은 중첩루프를 빠져나오기 위해선 추가적인 코드가 더 필요하다.
int main()
{
int num=0;
int q = 1;
for (int i=0; i<10; i++)
{
for(int j=0; j<10; j++)
{
if(num==20)
{
q = 0;
break;
}
num++;
}
if (q==0);
break;
}
}
위 처럼 break;의 특징은 현재 반복문만 끝내는 것이다.
j 반복문을 break 해도 i 반복문은 계속 실행되기 때문에 break문으로 중첩 루프를 빠져나오기 위해선 반복문 마다 break을 할 코드가 필요하다.
이런 상황에서 goto문을 활용하면 손쉽게 제어흐름을 벗어날 수 있다.
int main()
{
int sum = 0;
for (int i=0; i<10; i++)
{
for(int j=0; j<10; j++)
{
if (sum==20)
goto EXIT;
sum++;
}
}
EXIT:
}
goto EXIT를 하면 if문의 조건식이 충족될 떄 중첩루프문 바깥의 EXIT 레이블로 이동하기 떄문에 한번에 중첩루프를 탈출 할 수 있다.