본문 바로가기

시스템 프로그래밍/C/C++/C#

[C/C++] 분기(Goto)에 관하여

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include<bitset>
using namespace std;
 
int main(void){
    int name = 0;
 
    switch (name){
    case 0case 1case 2case 3:
        goto ILoveYou;
        cout << "출력할테면 출력해봐!";
        break;
    default:
        cout << "미생보고싶다~";
    }
 
ILoveYou:
    cout << "뛰어 넘었네?";
    return 0;
}
 
cs


case 0-4일 때 'ILoveYou' 지점으로 넘어라가는 뜻이다. 하지만 실무에서 잘 쓰지않고 소스 가독성을 떨어트리는 단점이 있다. 그런대도 아직까지 쓰이는 이유는

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include<bitset>
using namespace std;
 
int main(void){
    for (int x = 0; x < 10; x++)
        for (int y = 0; y < 10; y++){
            cout << x << " x " << y << " : " << x*y << "\n";
            if (x == 5 && y == 4)
                goto Break;
        }
Break :
    return 0;
}
 
 
 
cs

이런 경우 break를 쓰는 경우보다 훨씬 낫기 때문이라고 생각한다. 이 예제는 for문이 2 중첩이였지만 만약 3중첩 4중첩이상으로 올라갈 때엔 break로 처리하는 것 보다 goto로 처리하는 것이 낫기 때문이다.


'시스템 프로그래밍 > C/C++/C#' 카테고리의 다른 글

[C++] 1일차 복습  (0) 2015.01.28
[C/C++] 포인터도 증감이 가능할까?  (0) 2014.12.27
[C언어] Vigenere 알고리즘  (1) 2014.06.09