switch 문에서 Case 레이블로 이동

Abdul Basit 2023년10월12일
  1. C++의 switch
  2. C++의 switch 문에서 Jump to case label 오류 수정
switch 문에서 Case 레이블로 이동

이 기사에서는 C++에서 switch문의 사용에 대해 설명합니다. 또한 Jump to case label 오류를 포함하여 switch 문을 사용하는 동안 발생할 수 있는 오류에 대해 설명합니다.

C++의 switch

switch문은 주어진 부울 또는 정수 표현식을 평가하고 주어진 표현식의 평가를 기반으로 cases와 연관된 명령문을 실행합니다. 코드 길이를 줄이고 명확성을 향상시키므로 긴 if-else-if 문에 대한 최상의 대안입니다.

C/C++에서 평가를 수행하기 위해 switch 문에 다음 구문이 사용됩니다.

통사론:

switch (exp) {
  case a:
    // Block of code
    break;
  case b:
    // Block of code
    break;
  default:
    // Block of code
}

switch 문은 다음과 같은 방식으로 작동합니다.

  • 표현식은 switch 문에서 한 번 평가됩니다.
  • case 값은 switch 값과 비교됩니다.
  • case 문으로 switch 표현식을 평가한 후 조건이 참이면 일치하는 case 다음에 오는 코드 블록이 실행됩니다.
  • breakdefault 키워드는 switch 문에서 선택 사항입니다. 이 자습서의 끝에서 이에 대해 자세히 설명합니다.

요일 숫자에서 요일 이름을 계산한다고 가정합니다.

예제 코드:

#include <iostream>
using namespace std;

int main() {
  int weak_day = 3;
  switch (weak_day) {
    case 1:
      cout << "Monday";
      break;
    case 2:
      cout << "Tuesday";
      break;
    case 3:
      cout << "Wednesday";
      break;
    case 4:
      cout << "Thursday";
      break;
    case 5:
      cout << "Friday";
      break;
    case 6:
      cout << "Saturday";
      break;
    case 7:
      cout << "Sunday";
      break;
    default:
      cout << "Invalid input";
  }
}

출력:

Wednesday

break 키워드

break 키워드는 주어진 case가 충족된 후 switch 본문의 나머지 케이스를 건너뛰기 위해 switch 문과 함께 사용됩니다.

위의 예에서 switch 문이 평가되고 case 3의 기준을 충족하면 break;로 인해 switch 본문의 나머지 코드 블록을 건너뜁니다. 성명.

default 키워드

default 키워드는 switch 문과 함께 사용되어 지정된 switch 문에서 어떤 경우도 충족되지 않을 때 지정된 코드 블록을 실행합니다.

switch 문에서 default 키워드를 사용하는 방법을 보여주는 다음 예제를 살펴보겠습니다.

예제 코드:

#include <iostream>
using namespace std;

int main() {
  int a = 4;
  switch (a) {
    case 6:
      cout << "Value of a is 6";
      break;
    case 7:
      cout << "Value of a is 7";
      break;
    default:
      cout << "The number is other than 6 or 7";
  }
}

출력:

The number is other than 6 or 7

이 예제에서는 정수 변수의 값을 4로 지정했지만 실행 중에 주어진 조건을 만족하는 경우는 없습니다. 따라서 default 블록이 실행됩니다.

C++의 switch 문에서 Jump to case label 오류 수정

switch 문을 사용하는 동안 발생할 수 있는 일반적인 오류는 Jump to case label 오류입니다. 일부 case 레이블 내/아래에서 선언이 이루어질 때 오류가 발생합니다.

문제를 이해하기 위해 다음 예를 살펴보겠습니다.

#include <iostream>
using namespace std;

int main() {
  int a = 1;
  switch (a) {
    case 1:
      int i = 66;
      cout << i;
      break;

    case 2:
      cout << i * 3;
      break;
    default:
      cout << "Looking forward to the Weekend";
  }
  return 0;
}

위의 예에서 case 1:에서 i=66을 초기화하고 코드를 실행하면 됩니다. 이 코드는 i 값이 다른 경우에 표시되므로 Jump to case label 오류를 생성합니다.

case는 레이블일 뿐이므로 옆에 작성되는 코드의 범위를 제한하지 않습니다. 따라서 실행 중에 case 2가 실행되면 i는 초기화되지 않은 변수가 됩니다.

따라서 C++와 같은 강력한 형식의 언어에서는 이러한 일이 발생하지 않습니다. 따라서 컴파일 타임 오류가 발생합니다.

case 1 내의 범위 구분 기호 {}는 이 범위 문제를 극복하고 오류 없이 코드를 실행하는 데 도움이 됩니다.

#include <iostream>
using namespace std;

int main() {
  int a = 1;
  switch (a) {
    case 1: {
      int i = 66;
      cout << i;
      break;
    }
    case 2:
      cout << "value does not exist";
      break;
    default:
      cout << "Looking forward to the Weekend";
  }
  return 0;
}

관련 문장 - C++ Error