>  기사  >  백엔드 개발  >  Switch 설명에 \'오류: 케이스 라벨로 이동\'이 표시되는 이유는 무엇입니까?

Switch 설명에 \'오류: 케이스 라벨로 이동\'이 표시되는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-28 23:07:30949검색

Why am I Getting the

Switch 문에서 "오류: 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 occurs here
    }
}</code>

이 코드에서는 i 변수가 케이스 1 블록 내에서 선언되고 초기화됩니다. 그러나 선택 사항이 2인 경우 컴파일러는 케이스 2 블록 내의 i 변수에 액세스하려고 시도하지만 초기화되지는 않습니다. 이로 인해 "케이스 레이블로 이동" 오류가 발생합니다.

해결책: 스위치 케이스 내에서 블록 범위 지정 사용

이 문제를 해결하려면 각 스위치 케이스 블록을 묶어야 합니다. 명시적인 중괄호 블록({}) 내에서. 이는 특정 케이스 블록 내에서 선언된 모든 변수의 범위를 해당 블록으로 제한하여 후속 케이스 블록의 액세스를 방지합니다.

<code class="cpp">#include <iostream>
int main() {
    int choice;
    std::cin >> choice;
    switch (choice) {
    case 1: {
        int i = 0;
        break;
    }
    case 2:
        int j = 10;
        break;
    }
}</code>

블록 범위 지정을 사용하면 i 변수가 내에서만 액세스 및 초기화되도록 할 수 있습니다. 케이스 1 블록, j 변수는 케이스 2 블록 내에서만 액세스하고 초기화할 수 있습니다. 이렇게 하면 switch 문 내에 적절하고 예측 가능한 변수 범위가 생성됩니다.

switch 문의 변수 범위 동작을 이해하고 블록 범위 지정을 적절하게 사용하면 "Jump to Case Label" 오류를 방지하고 올바른 초기화를 보장할 수 있습니다. 그리고 변수의 사용법.

위 내용은 Switch 설명에 \'오류: 케이스 라벨로 이동\'이 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.