스위치…C의 사례(C의 스위치 문)와 예제

C의 Switch 문이란 무엇입니까?

C의 스위치 문 변수의 값을 테스트하고 여러 케이스와 비교합니다. 케이스 일치가 발견되면 해당 특정 케이스와 연관된 명령문 블록이 실행됩니다.

스위치 블록의 각 케이스에는 식별자라고 하는 서로 다른 이름/번호가 있습니다. 사용자가 제공한 값은 일치하는 항목을 찾을 때까지 스위치 블록 내부의 모든 사례와 비교됩니다.

대소문자 일치가 발견되지 않으면 기본 문이 실행되고 제어는 스위치 블록 밖으로 나갑니다.

대소문자 전환 구문

'C' 프로그램에서 switch-case가 구현되는 방법에 대한 일반적인 구문은 다음과 같습니다.

switch( expression )
{
	case value-1:
			Block-1;
			Break;
	case value-2:
			Block-2;
			Break;
	case value-n:
			Block-n;
			Break;
	default:
			Block-1;
			Break;
}
Statement-x;
  • 표현식은 정수 표현식이거나 문자 표현식일 수 있습니다.
  • 값-1, 2, n은 각 케이스를 개별적으로 식별하는 데 사용되는 케이스 레이블입니다. 케이스 라벨은 프로그램을 실행하는 동안 문제를 일으킬 수 있으므로 동일해서는 안 된다는 점을 기억하세요. '1'과 동일한 라벨을 가진 두 개의 케이스가 있다고 가정합니다. 그런 다음 프로그램을 실행하는 동안 프로그램이 두 번째 사례를 실행하기를 원하더라도 먼저 나타나는 사례가 실행됩니다. 이로 인해 프로그램에 문제가 발생하고 원하는 출력이 제공되지 않습니다.
  • 케이스 레이블은 항상 콜론( : )으로 끝납니다. 이러한 각 사례는 블록과 연관되어 있습니다.
  • 블록은 특정 사례에 대해 그룹화된 여러 명령문일 뿐입니다.
  • 스위치가 실행될 때마다 test-expression의 값은 스위치 내부에 정의된 모든 케이스와 비교됩니다. 테스트 표현식에 값 4가 포함되어 있다고 가정합니다. 이 값은 프로그램에서 레이블 XNUMX가 발견될 때까지 모든 케이스와 비교됩니다. 사례가 발견되자마자 해당 특정 사례와 관련된 명령문 블록이 실행되고 제어가 스위치 밖으로 나갑니다.
  • 각 케이스의 break 키워드는 특정 케이스의 끝을 나타냅니다. 각 케이스에 중단을 넣지 않으면 특정 케이스가 실행되더라도 C의 스위치는 끝에 도달할 때까지 모든 케이스를 계속 실행합니다. 이런 일이 일어나서는 안 됩니다. 그러므로 우리는 항상 각 경우에 break 키워드를 넣어야 합니다. Break는 일단 실행되면 케이스를 종료하고 컨트롤은 스위치에서 빠져 나옵니다.
  • default 케이스는 선택 사항입니다. test-expression의 값이 switch 내부의 케이스와 일치하지 않을 때마다 default가 실행됩니다. 그렇지 않으면 switch에 default를 쓸 필요가 없습니다.
  • 스위치가 실행되면 제어는 명령문-x로 이동하고 프로그램 실행은 계속됩니다.

Switch 명령문 흐름도

다음 다이어그램은 switch case에서 케이스가 선택되는 방식을 보여줍니다.

Switch 명령문 흐름도
스위치 작동 방식

C의 스위치 케이스 예

다음 프로그램은 switch의 사용을 보여줍니다.

#include <stdio.h>
    int main() {
        int num = 8;
        switch (num) {
            case 7:
                printf("Value is 7");
                break;
            case 8:
                printf("Value is 8");
                break;
            case 9:
                printf("Value is 9");
                break;
            default:
                printf("Out of range");
                break;
        }
        return 0;
    }

출력:

Value is 8

C의 스위치 케이스 예

  1. 주어진 프로그램에서 우리는 초기화를 설명했습니다. 변수 값이 8인 숫자입니다.
  2. 스위치 구성은 변수 num에 저장된 값을 비교하고 일치하는 케이스와 관련된 명령문 블록을 실행하는 데 사용됩니다.
  3. 이 프로그램에서는 변수 num에 저장된 값이 8이므로 스위치는 Case-Label이 XNUMX인 케이스를 실행합니다. 케이스를 실행한 후 제어는 스위치에서 벗어나 다음과 같은 성공적인 결과로 프로그램이 종료됩니다. 출력 화면에 값을 인쇄합니다.

변수 num의 값을 변경해 보고 출력의 변화를 확인하세요.

예를 들어, 기본값을 사용하는 다음 프로그램을 고려해 보겠습니다.

#include <stdio.h>
int main() {
int language = 10;
  switch (language) {
  case 1:
    printf("C#\n");
    break;
  case 2:
    printf("C\n");
    break;
  case 3:
    printf("C++\n");
    break;
  default:
    printf("Other programming language\n");}}

출력:

Other programming language

C에서 스위치 케이스로 작업할 때 여러 케이스를 고유한 레이블로 그룹화합니다. switch 문의 끝에서 분기하려면 각 경우에 break 문을 도입해야 합니다.

선택적 기본 사례는 다른 일치 항목이 없을 때 실행됩니다.

다음의 switch 문을 고려해 보겠습니다.

#include <stdio.h>
int main() {
int number=5;
switch (number) {
  case 1:
  case 2:
  case 3:
    printf("One, Two, or Three.\n");
    break;
  case 4:
  case 5:
  case 6:
    printf("Four, Five, or Six.\n");
    break;
  default:
    printf("Greater than Six.\n");}}

출력:

Four, Five, or Six.

C의 중첩 스위치

In C, 외부 스위치에 내부 스위치를 내장할 수 있습니다. 또한 내부 스위치와 외부 스위치의 대소문자 상수는 충돌 없이 공통 값을 가질 수 있습니다.

사용자가 자신의 ID를 입력하도록 하는 다음 프로그램을 고려해 보겠습니다. ID가 유효하면 비밀번호를 입력하라는 메시지가 표시되고, 비밀번호가 올바르면 프로그램이 사용자 이름을 출력하고, 그렇지 않으면 프로그램은 잘못된 비밀번호를 출력하고, ID가 존재하지 않으면 프로그램은 잘못된 ID를 출력합니다.

#include <stdio.h>
int main() {
        int ID = 500;
        int password = 000;
        printf("Plese Enter Your ID:\n ");
        scanf("%d", & ID);
        switch (ID) {
            case 500:
                printf("Enter your password:\n ");
                scanf("%d", & password);
                switch (password) {
                    case 000:
                        printf("Welcome Dear Programmer\n");
                        break;
                    default:
                        printf("incorrect password");
                        break;
                }
                break;
            default:
                printf("incorrect ID");
                break;
        }
}

출력:

Plese Enter Your ID:
 500
Enter your password:
 000
Welcome Dear Programmer

C의 중첩 스위치

  1. 주어진 프로그램에서 우리는 초기화된 두 개의 변수, 즉 ID와 비밀번호를 설명했습니다.
  2. 외부 스위치 구성은 변수 ID에 입력된 값을 비교하는 데 사용됩니다. 일치하는 사례(ID==500인 경우)와 관련된 문 블록을 실행합니다.
  3. 대소문자가 일치하여 블록문이 실행되면 내부 스위치를 사용하여 변수 비밀번호에 입력된 값을 비교하고 일치된 대소문자(password==000인 경우)에 연결된 명령문을 실행합니다.
  4. 그렇지 않으면, switch case는 default case를 트리거하고 프로그램 개요와 관련된 적절한 텍스트를 출력합니다.

스위치 케이스가 필요한 이유는 무엇입니까?

한 가지 잠재적인 문제가 있습니다. if-else 문 이는 대체 경로의 수가 증가할 때마다 프로그램의 복잡성이 증가한다는 것입니다. 프로그램에서 여러 if-else 구조를 사용하면 프로그램을 읽고 이해하기 어려울 수 있습니다. 때로는 프로그램을 직접 작성한 개발자를 혼란스럽게 할 수도 있습니다.

이 문제에 대한 해결책은 스위치 문입니다.

switch 문의 규칙

  • 표현식은 항상 결과에 따라 실행되어야 합니다.
  • 케이스 레이블은 상수이고 고유해야 합니다.
  • 케이스 라벨은 콜론( : )으로 끝나야 합니다.
  • 각각의 경우에는 break 키워드가 있어야 합니다.
  • 기본 레이블은 하나만 있을 수 있습니다.
  • 여러 개의 스위치 문을 중첩할 수 있습니다.

요약

  • 스위치는 '에서 의사 결정 구성 요소입니다.C. '
  • 스위치는 여러 결정이 관련된 프로그램에서 사용됩니다.
  • 스위치에는 실행 가능한 테스트 표현식이 포함되어야 합니다.
  • 각 케이스에는 break 키워드가 포함되어야 합니다.
  • 케이스 라벨은 상수이고 고유해야 합니다.
  • 기본값은 선택 사항입니다.
  • 여러 개의 스위치 문이 서로 중첩될 수 있습니다.