> 백엔드 개발 > C++ > Switch 문에서 \'Jump to Case Label\' 오류가 발생하는 이유는 무엇입니까?

Switch 문에서 \'Jump to Case Label\' 오류가 발생하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-29 04:19:29
원래의
652명이 탐색했습니다.

Why Does

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿