Switch 문 점프 라벨 오류 문제 해결
C에서 switch 문을 사용하면 "Jump to Case Label"과 같은 컴파일 오류가 발생하는 경우가 많습니다. 이는 한 케이스에서 선언된 변수가 후속 케이스에서 실수로 액세스되는 경우에 발생합니다.
다음 코드를 고려하세요.
<code class="cpp">int main() { int choice; std::cin >> choice; switch (choice) { case 1: int i = 0; break; case 2: // error here } }</code>
이 경우 변수 i가 다음과 같기 때문에 컴파일러 오류가 발생합니다. 단, Case 2에서는 초기화되지 않았음에도 접근이 가능합니다.
이 문제를 해결하려면 케이스 라벨을 중괄호 { }로 묶어주세요. 이렇게 하면 초기화된 케이스 범위 내에서만 변수에 액세스할 수 있습니다.
<code class="cpp">int main() { int choice; std::cin >> choice; switch (choice) { case 1: { int i = 0; break; } case 2: break; } }</code>
기본적으로 스위치 문은 goto 문을 활용하여 특정 케이스로 점프합니다. 한 케이스에서 변수가 선언되고 명령문이 다른 케이스로 이동하는 경우 변수는 여전히 존재하지만 초기화되지 않을 수 있습니다. 중괄호를 사용하면 각 사례에 대해 별도의 범위가 생성되어 해당 변수가 격리됩니다.
위 내용은 C 스위치 문에서 \'Jump to Case Label\' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!