Switch 문의 Case 레이블로 점프 오류
"Jump to Case Label"이라는 컴파일 오류가 발생하는 경우 Switch 문의 구조. 이 오류는 중괄호({ })로 표시되는 명시적인 블록 구분 기호를 사용하지 않고 후속 사례로 확장되는 변수를 한 사례에서 선언하려고 할 때 발생합니다.
예를 들어 다음 코드를 고려하세요.
<code class="cpp">#include <iostream> int main() { int choice; std::cin >> choice; switch(choice) { case 1: int i=0; break; case 2: // error here // Code relying on the existence of i } }</code>
이 예에서 문제는 사례 1의 i 선언에서 발생합니다. 사례 2에서는 i가 표시되지만 초기화되지는 않습니다. 이는 초기화 코드가 각 경우에 특정하기 때문입니다. 결과적으로 선택사항이 2인 경우 후속 코드에서 i를 사용하면 예상치 못한 결과가 발생할 수 있습니다.
이 문제를 해결하려면 각 사례에 대해 명시적인 블록을 사용하세요.
<code class="cpp">switch(choice) { case 1: { int i=0; break; } case 2: { // Use of i only within this block } }</code>
또는, switch 문과 유사한 goto 문을 활용할 수 있습니다.
<code class="cpp">int main() { if(rand() % 2) // Toss a coin goto end; int i = 42; end: // Similar scope and initialization issues as with switch, but with goto std::cout << i; }</code>
본질적으로 goto를 명시적으로 차단하거나 주의 깊게 사용하면 변수 선언과 초기화가 의도한 경우에 국한되어 잘못된 동작을 방지할 수 있습니다.
위 내용은 Switch 문에서 \"Jump to Case Label\" 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!