Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C/C++에서 goto문 사용법과 예제 총정리

goto문은 프로그램의 제어 흐름을 특정 레이블(label)로 즉시 이동시키는 점프 문(jump statement)입니다. 하지만 goto문을 남용하면 프로그램의 흐름이 복잡해지고 코드를 이해하기 어려워지기 때문에, 실무에서는 사용을 지양하는 것이 일반적입니다.

goto문 기본 문법

goto문의 기본적인 문법 구조는 다음과 같습니다.

goto label;
.
.
.
label: statements;

goto 키워드 뒤에 이동하고자 하는 레이블 이름을 지정하면, 프로그램 실행 중 해당 레이블 위치로 제어가 곧바로 넘어갑니다.

C++에서의 goto문 예제

다음은 C++에서 goto문을 활용한 간단한 예제 코드입니다.

예제 코드

#include <iostream>
using namespace std;
int main () {
    int i = 1;
    while(1) {
        cout<< i <<"\n";
        if(i == 10)
        goto OUT;
        i++;
    }
    OUT: cout<<"Out of the while loop";
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

1
2
3
4
5
6
7
8
9
10
Out of the while loop

코드 동작 원리 상세 설명

위 프로그램의 동작 과정을 단계별로 살펴보겠습니다.

먼저 무한 루프인 while(1) 반복문이 사용되었습니다. while 루프가 한 번 실행될 때마다 변수 i의 현재 값이 화면에 출력됩니다.

그다음 if 조건문을 통해 변수 i의 값이 10인지 검사합니다. 만약 i가 10이라면 goto OUT; 문장이 실행되어 while 루프를 벗어나게 됩니다. i가 10이 아니라면 i의 값이 1씩 증가하며 루프가 계속됩니다.

여기서 goto문과 함께 사용된 레이블은 OUT입니다. 이 레이블은 while 루프 외부에 위치하고 있으며, 프로그램 제어를 루프 밖으로 빠져나오게 하는 역할을 합니다. 루프를 탈출한 후에는 "Out of the while loop"이라는 메시지가 출력되고 프로그램이 종료됩니다.

핵심 로직 부분의 코드는 다음과 같습니다.

int i = 1;
while(1) {
    cout<< i <<"\n";
    if(i == 10)
    goto OUT;
    i++;
}
OUT: cout<<"Out of the while loop";

goto문 사용 시 주의사항

goto문은 강력한 기능이지만 다음과 같은 이유로 신중하게 사용해야 합니다.

가독성 저하: 코드의 실행 흐름이 여러 곳으로 분기되어 프로그램 로직을 파악하기 어려워집니다.
스파게티 코드 유발: 무분별한 점프로 인해 코드 구조가 엉키게 됩니다.
디버깅 어려움: 오류 발생 시 원인 추적이 복잡해집니다.

따라서 대부분의 경우 break, continue, 함수 호출 등의 구조화된 제어문으로 대체하는 것이 좋으며, goto문은 에러 처리 등 꼭 필요한 경우에만 제한적으로 사용하는 것이 바람직합니다.