{
// 무한 루프
//go:
// cout << 1 << endl;
// goto go;
}
goto
문을 사용하여 무한 루프를 만드는 예제입니다.go:
레이블을 정의하고, "1"을 출력한 후 goto go;
를 사용하여 go
레이블로 이동합니다.{
int num = 5;
if (num % 3 == 0)
goto go;
if (num % 5 == 0)
goto go;
cout << "can't divide 3 and 5" << endl;
go:
cout << "wow" << endl;
}
num
변수를 5로 초기화합니다.num
이 3의 배수인지 확인하고, 그렇다면 go
레이블로 이동합니다.num
이 5의 배수인지 확인하고, 그렇다면 go
레이블로 이동합니다.go:
레이블로 이동하여 "wow"를 출력합니다.{
// 팩토리얼
int num;
cin >> num;
int total = 1;
multiply:
total *= num;
if (--num >= 1)
goto multiply;
cout << total << endl;
}
num
을 입력받습니다.total
변수를 1로 초기화합니다.multiply:
레이블로 이동하여 total
에 num
을 곱합니다.num
을 1 감소시키고, num
이 1 이상이면 multiply
레이블로 이동합니다.num
이 1보다 작아지면 루프가 종료되고, total
을 출력합니다.goto
문을 사용하여 팩토리얼 계산을 반복합니다.{
// 알파벳 출력
char ch = 'a';
alpha:
cout << ch << endl;
if (++ch <= 'z')
goto alpha;
}
ch
변수를 'a'로 초기화합니다.alpha:
레이블로 이동하여 ch
를 출력합니다.ch
를 1 증가시키고, ch
가 'z' 이하이면 alpha
레이블로 이동합니다.ch
가 'z'보다 커지면 루프가 종료됩니다.goto
문을 사용하여 'a'부터 'z'까지의 알파벳을 출력합니다.{
// 피보나치 수열
// 0, 1, 1, 2, 3, 5, 8, 13, 21
// a(0) = 0, a(1) = 1
// a(n) = a(n - 2) + a(n - 1)
int num;
cin >> num;
if (num <= 1)
cout << num << endl;
else
{
int prevValue = 0;
int currValue = 1;
add:
int nextValue = prevValue + currValue;
prevValue = currValue;
currValue = nextValue;
if (--num - 1)
goto add;
cout << currValue << endl;
}
}
num
을 입력받습니다.num
이 1 이하이면 num
을 출력합니다.prevValue
를 0으로, currValue
를 1로 초기화합니다.add:
레이블로 이동하여 다음 피보나치 수를 계산합니다.prevValue
와 currValue
를 갱신합니다.num
을 1 감소시키고, num - 1
이 0 이상이면 add
레이블로 이동합니다.currValue
를 출력합니다.goto
문을 사용하여 피보나치 수열을 계산합니다.goto
문은 코드의 특정 위치로 분기할 때 사용됩니다. 그러나 코드의 가독성과 유지보수성을 떨어뜨릴 수 있으므로, 일반적으로는 반복문 (for
, while
, do-while
)과 조건문 (if
, switch
)을 사용하는 것이 좋습니다. 예제에서는 goto
문을 사용하여 무한 루프, 조건에 따른 분기, 팩토리얼 계산, 알파벳 출력, 피보나치 수열 계산 등을 구현하였습니다.