본문 바로가기
Program/C

12. C언어 goto 문

by Murciellago 2021. 10. 20.
반응형
SMALL

이 장에서는 C언어 프로그래밍에서 goto 문을 사용하는 방법을 설명합니다. 또한 goto 문을 사용해야 할 때와 사용하지 말아야 할 때를 설명하겠습니다

 

goto 문은 지정된 라벨을 프로그램 제어를 통해 전송할 수 있다.

 

1. goto 문

1
2
3
4
5
goto label;
... .. ...
... .. ...
label: 
statement;
cs

   - label은 변수이고 goto 문이 실행하면 label 변수로 이동하고 코드를 실행함

 

2. goto 순서도

     ex) goto 문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
 
int main() {
 
   const int maxInput = 100;
   int i;
   double number, average, sum = 0.0;
 
   for (i = 1; i <= maxInput; ++i) {
      printf("%d. Enter a number: ", i);
      scanf("%lf"&number);
      
      // go to jump if the user enters a negative number
      if (number < 0.0) {
         goto jump;
      }
      sum += number;
   }
 
jump:
   average = sum / (i - 1);
   printf("Sum = %.2f\n", sum);
   printf("Average = %.2f", average);
 
   return 0;
}
 
 

 

     output)

1
2
3
4
5
6
1. Enter a number: 3
2. Enter a number: 4.3
3. Enter a number: 9.3
4. Enter a number: -2.9
Sum = 16.60
Average = 5.53
cs

 

3. goto를 피해야 하는 이유

   - goto 문을 사용하면 버그로 인해 실행하기 어려운 코드가 생성될 수 있음

 

     ex) 예제

1
2
3
4
5
6
7
8
9
10
11
one:
for (i = 0; i < number; ++i)
{
    test += i;
    goto two;
}
two: 
if (test > 5) {
  goto three;
}
... .. ...
cs

   - 또한 goto 문을 사용하면 범위를 벗어나 제대로 된 코드를 실행할 수 없음

 

4. goto 문을 사용해야 되는 시기

   - 간단한 코드라고 생각되면 goto문을 사용해도 무관함

   - 그러나 간단한 코드는 goto 문 없이도 프로그램 코드를 생성할 수 있음

반응형
LIST

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

14. C언어 사용자 정의 함수  (0) 2021.11.28
13. C언어 전처리기와 매크로  (0) 2021.11.17
11. C언어 switch 문  (0) 2021.10.20
10. C언어 break와 continue  (0) 2021.10.20
9. C언어 While 및 do~while 문  (0) 2021.10.18

댓글