본문 바로가기
c언어

c언어 goto문 사용해보기

by 개발자 L 2022. 12. 4.
반응형

c언어 goto문 사용해보기

네 안녕하세요, 이번 포스팅에서는 goto문을 사용해보는 시간을 가져보도록 하겠습니다.

goto문은 c언어 문법 중 가장 오래된 문법입니다.

이 goto문에서 사실 여러 가지 문법이 파생되었다 해도 됩니다.

하지만 지금은 이를 통하여 여러가지 유용한 문법이 만들어져 거의 사용을 하지 않습니다.

그래서 현재는 잘 사용하지 않지만, c언어 문법의 조상 격인 goto문을 어떻게 사용하는지 알아보도록 하겠습니다.

 

1. goto문을 사용하지 않는 이유

goto문은 앞서 말씀드렸다시피 거의 사용을 하지 않습니다.

그 이유는 goto문을 쓰게 되면 프로그램 소스가 너무 복잡해지기 때문입니다.

goto문의 기능은 프로그램의 실행 순서를 goto문이 가리키는 곳으로 점프를 하게 만들어서 순서를 뒤죽박죽으로 만드는 주범입니다.

그래서 이 goto문으로 인하여 소스를 해석하기 힘들어질 때가 비일비재합니다.

그래서 c언어를 사용하는 개발자들에게 goto문은 되도록이면 쓰지 말라고 권고를 할 정도입니다.

하지만 이 goto문은 반복문의 기능을 하기 때문에 버릴 수가 없어서 이를 좀 더 편하게 쓸 수 있는 문법인 for문과 while문을 파생시켜서 현재는 이들로 대체하여 쓰고 있습니다.

 

2. goto문 사용방법

goto문은 이렇게 씁니다.

label :
	문장1;
	문장2;
	...
goto label;

이렇게 씁니다.

그래서 루프를 돌릴 수가 있습니다.

그러면 이를 활용하여 간단한 예제를 한 번 작성을 해보도록 하겠습니다.

반응형

 

#include <stdio.h>

int main()

{
    int i = 1;

    loop:
        printf("%d * %d = %d\n", 3, i, 3 * i);
        i++;
        if(i == 10) 
        {
            goto end;
        }
        goto loop;

    end:
        return 0;
}

이렇게 한 번 작성을 해봤습니다.

여기에서 조금 특이한 점은 end, 다시 말해서 goto문에서의 반복이 끝날 때 return 문장을 쓴다는 것입니다.

물론 return 문장을 괄호나 그 외 조건문이나 반복문 안에 쓰는 경우가 있기는 한데,

생각보다 그렇게 쓰는 경우가 많지는 않아요.

그래서 저런 모양이 있다는 것도 알아두시면 좋습니다.

그럼 결과 화면을 같이 봅시다.

3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27

이렇게 계속 i의 값이 순차적으로 증가를 하고,

i의 값이 10이 될 때 프로그램이 종료가 되었습니다.

goto의 매커니즘을 이해하기 쉽다면 goto를 적극적으로 써도 되지만,

그것보다 훨씬 편하게 설계가 된 for문과 while문이 존재하니 되도록이면 그걸 쓰도록 합시다.

이제 여러분들은 goto문을 통하여 반복문을 간단히 맛을 봤습니다.

 

여기까지 goto문에 대하여 알아보았는데요,

다음 포스팅에서는 지금까지 배운 문법을 활용하여 여러가지 문제들을 풀며 코딩 실력을 향상하는 시간을 가져보도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사합니다 ~

반응형

댓글