[C] goto문

728x90

C언어에서 goto문은 프로그램 수행 도중에 원하는 곳으로 제어를 무조건 옮기는 제어문입니다.

 

1. 사용방법

형식은 아래와 같습니다.

 

 Label:
  goto Label;
  ..

 

 

예제) 

#include <stdio.h>
#pragma warning(disable:4996)
void main(void) {

  int i,n,c = 'A';
  while(1){
    printf("\n 횟수는?");
    scanf("%d",&n);
    for(i=1;i<=n;i++){
      printf("%c",c);
      if(c=='Q')
        goto end;//Q를 만난다면 무조건 end로 옮김
        c++;
    }
  }
  end: // 레이블 명 뒤에는 콜론(:)을 붙임
  printf("\n\n종료");
}

 

결과)

 

2. goto문을 사용할 수 없는 경우

 

goto 문이 보내는 레이블은 제어문 안의 레이블로는 보낼 수가 없습니다.

 

예제) 아래 3가지 케이스모두 제대로 작동하지 않습니다.

#include <stdio.h>
#pragma warning(disable:4996)
void main(void) {

  int a;

  scanf("입력값은? %d",&a);

  if(a == 10){
    innerif: 
    printf("선택 제어문 안으로 이동");
  }

  goto innerif; 
  
}

 

#include <stdio.h>
#pragma warning(disable:4996)
void main(void) {

  int a;

  scanf("입력값은? %d",&a);

  for(int i=0;i<a;i++){
    innerfor:  
    printf("반복 제어문 안으로 이동");
  }

  goto innerfor;
  
}

 

#include <stdio.h>
#pragma warning(disable:4996)
void main(void) {

  int a;
  
  scanf("입력값은? %d",&a);
  
  for(int i=0;i<a;i++){
    innerfor:  
    printf("반복문 안으로 이동");
  }

  for(int j=0;j<a;j++){
    goto innerfor;
  }
    
}

 

'C Programming > C' 카테고리의 다른 글

[C] 배열  (1) 2024.05.02
[C] 기억 클래스  (1) 2024.04.26
[C] 함수  (0) 2024.04.26
[C] 연산자  (1) 2024.04.26
[C] 표준 입출력 함수  (0) 2024.04.26