> 백엔드 개발 > C++ > 본문

C 스위치 문에서 \'Jump to Case Label\' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있나요?

Barbara Streisand
풀어 주다: 2024-10-31 22:33:02
원래의
900명이 탐색했습니다.

Why do I get a

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

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