logo

C 스위치 설명

C의 스위치 문은 if-else-if 래더 문에 대한 대안으로, 스위치 변수라고 불리는 단일 변수의 다양한 가능한 값에 대해 여러 작업을 실행할 수 있습니다. 여기서는 단일 변수의 다양한 값에 대해 여러 경우에 다양한 명령문을 정의할 수 있습니다.

switch 문의 구문 c 언어 다음과 같습니다:

 switch(expression){ case value1: //code to be executed; break; //optional case value2: //code to be executed; break; //optional ...... default: code to be executed if all cases are not matched; } 

C언어의 스위치문 규칙

  1. 그만큼 스위치 표현 정수 또는 문자 유형이어야 합니다.
  2. 그만큼 케이스 값 정수 또는 문자 상수여야 합니다.
  3. 그만큼 케이스 값 스위치 문 내에서만 사용할 수 있습니다.
  4. 그만큼 break 문 스위치 케이스에서는 필수가 아닙니다. 선택 사항입니다. 케이스에 break 문이 없으면 모든 케이스는 일치하는 케이스 다음에 실행됩니다. 그것은 다음과 같이 알려져 있습니다. 실패로 끝나다 C 스위치 문의 상태.

예제를 통해 이해해 봅시다. 다음과 같은 변수가 있다고 가정합니다.

 int x,y,z; char a,b; float f; 
유효한 스위치잘못된 스위치유효한 사례잘못된 사례
스위치(x)스위치(f)사례 3;사례 2.5;
스위치(x>y)스위치(x+2.5)경우 'a';케이스 x;
스위치(a+b-2)사례 1+2;케이스 x+2;
스위치(func(x,y))경우 'x'>'y';사례 1,2,3;

C의 스위치 문의 흐름도

C의 스위치 문의 흐름

Switch Case 문의 기능

먼저, switch 문에 지정된 정수 표현식이 평가됩니다. 그런 다음 이 값은 다른 경우에 제공된 상수 값과 하나씩 일치됩니다. 일치하는 항목이 발견되면 해당 Case에 지정된 모든 문이 기본 문을 포함하여 해당 Case 이후에 있는 모든 Case와 함께 실행됩니다. 두 사례는 비슷한 값을 가질 수 없습니다. 일치하는 케이스에 break 문이 포함되어 있으면 그 이후에 있는 모든 케이스를 건너뛰고 제어가 스위치에서 나옵니다. 그렇지 않으면 일치하는 사례 다음에 오는 모든 사례가 실행됩니다.

C 스위치 문은 어떻게 작동하나요?

C에서 스위치 문이 어떻게 작동하는지 단계별로 살펴보겠습니다.

다음을 고려하세요 스위치 문 :

C 프로그램:

 #include int main() { int num = 2; switch (num) { case 1: printf('Value is 1
'); break; case 2: printf('Value is 2
'); break; case 3: printf('Value is 3
'); break; default: printf('Value is not 1, 2, or 3
'); break; } return 0; } 

산출

 Value is 2 

단계별 프로세스:

  1. 그만큼 스위치 변수 번호 평가됩니다. 이 경우, 하나에 으로 초기화됩니다. 값 2 .
  2. 그만큼 평가된 숫자(2) 값 내부의 각 케이스 라벨에 지정된 상수와 비교됩니다. 스위치 블록 .
  3. 그만큼 스위치 문 일치 평가값(2) 에 지정된 상수를 사용하여 두 번째 경우 (케이스 2) . 일치하는 항목이 있으므로 프로그램은 해당 코드 블록으로 점프합니다. 일치하는 경우(케이스 2) .
  4. 관련된 코드 블록 사례 2 실행되어 인쇄됩니다. '값은 2' 콘솔에.
  5. 그만큼 '부서지다' 키워드는 다음의 코드 블록에 있습니다. 사례 2 . 결과적으로 프로그램은 코드 블록을 실행한 직후에 switch 문에서 빠져 나옵니다.
  6. 프로그램 제어는 이후에도 계속됩니다. 스위치 문 , 그리고 다음의 모든 진술 스위치 문 실행됩니다. 이 경우 스위치 이후에 명령문이 없으므로 프로그램이 종료됩니다.
  7. 그만큼 스위치 문 의 가치를 평가했다 변수 번호 , 사례 2와 일치하는 항목을 찾고 해당 코드 블록을 실행한 다음 종료합니다. 스위치 블록 의 존재로 인해 'break' 문 .

C의 스위치 문의 예

C 언어 스위치 문의 간단한 예를 살펴보겠습니다.

 #include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equals to 10'); break; case 50: printf('number is equal to 50'); break; case 100: printf('number is equal to 100'); break; default: printf('number is not equal to 10, 50 or 100'); } return 0; } 

산출

정렬 배열 목록 자바
 enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50 

스위치 케이스 예 2

 #include int main() { int x = 10, y = 5; switch(x>y && x+y>0) { case 1: printf('hi'); break; case 0: printf('bye'); break; default: printf(' Hello bye '); } } 

산출

 hi 

Switch 문의 Break 및 Default 키워드

설명하고 정의해보자. '부서지다' 그리고 '기본' 키워드 예제 코드 및 출력과 함께 스위치 문의 컨텍스트에서.

1. 브레이크 키워드:

그만큼 'break' 키워드 스위치 문을 조기에 종료하기 위해 각 사례의 코드 블록 내에서 사용됩니다. 프로그램이 다음을 만났을 때 'break' 문 케이스 블록 내부에서는 즉시 종료됩니다. 스위치 문 , 후속 케이스 블록의 실행을 방지합니다. 그만큼 'break' 문 스위치 문을 피하는 데 중요합니다' '실패로 끝나다' 행동.

예:

의 사용법을 이해하기 위한 프로그램을 살펴보겠습니다. 브레이크 키워드 C에서

 #include int main() { int num = 3; switch (num) { case 1: printf('Value is 1
'); break; // Exit the switch statement after executing this case block case 2: printf('Value is 2
'); break; // Exit the switch statement after executing this case block case 3: printf('Value is 3
'); break; // Exit the switch statement after executing this case block default: printf('Value is not 1, 2, or 3
'); break; // Exit the switch statement after executing the default case block } return 0; } 

산출

 Value is 3 

설명:

이 예에서는 스위치 문 의 가치를 평가합니다. 변수 번호 (이것은 )와 일치합니다. 사례 3 . 관련된 코드 블록 사례 3 실행, 인쇄 중 '값은 3' 콘솔에. 그만큼 'break' 문 이내에 사례 3 프로그램이 이 케이스 블록을 실행한 후 즉시 스위치 문을 종료하여 다른 케이스의 실행을 방지합니다.

2. 기본 키워드:

다음 중 어느 것도 없을 때 대소문자 상수 일치하는 평가된 표현 , 다음과 같이 작동합니다. 만능 케이스 . 일치하는 사례가 없고 '기본' 사례가 존재합니다. , 관련된 코드 블록 '기본' 사건이 실행됩니다. 명시된 상황 중 어느 것도 제공된 입력에 적용되지 않는 상황을 처리하는 데 자주 사용됩니다.

예:

의 사용법을 이해하기 위한 프로그램을 살펴보겠습니다. 기본 키워드 C에서

 #include int main() { int num = 5; switch (num) { case 1: printf('Value is 1
'); break; case 2: printf('Value is 2
'); break; case 3: printf('Value is 3
'); break; default: printf('Value is not 1, 2, or 3
'); break; // Exit the switch statement after executing the default case block } return 0; } 

산출

 Value is not 1, 2, or 3 

설명:

이 예에서는 스위치 문 의 가치를 조사합니다. 변수 번호 (이것은 5 ). 숫자와 일치하는 사례가 없기 때문에 프로그램은 다음과 관련된 코드 블록을 수행합니다. '기본' 사례 . 그만큼 'break' 문 안에 '기본' 사례 프로그램이 종료되는지 확인합니다. 스위치 문 실행 후 '기본' 케이스 블록.

둘 다 '부서지다' 그리고 '기본' 키워드 스위치 문 내에서 실행 흐름을 제어하는 ​​데 필수적인 역할을 합니다. 그만큼 'break' 문 넘어지는 행동을 방지하는 데 도움이 됩니다. '기본' 사례 일치하지 않는 사례를 처리하는 방법을 제공합니다.

C Switch 문이 실패했습니다.

C 언어에서는 스위치 문이 실패합니다. 이는 switch 케이스에서 break 문을 사용하지 않으면 일치하는 케이스 이후의 모든 케이스가 실행된다는 의미입니다.

아래 예제를 통해 switch 문의 상태를 통해 가을을 이해해 보겠습니다.

 #include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equal to 10
'); case 50: printf('number is equal to 50
'); case 100: printf('number is equal to 100
'); default: printf('number is not equal to 10, 50 or 100'); } return 0; } 

산출

 enter a number:10 number is equal to 10 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100 

산출

 enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100 

중첩된 스위치 케이스 문

스위치 문 내에서 원하는 만큼 많은 스위치 문을 사용할 수 있습니다. 이러한 유형의 명령문을 중첩된 스위치 케이스 명령문이라고 합니다. 다음 예를 고려하십시오.

 #include int main () { int i = 10; int j = 20; switch(i) { case 10: printf('the value of i evaluated in outer switch: %d
',i); case 20: switch(j) { case 20: printf('The value of j evaluated in nested switch: %d
',j); } } printf('Exact value of i is : %d
', i ); printf('Exact value of j is : %d
', j ); return 0; } 

산출

 the value of i evaluated in outer switch: 10 The value of j evaluated in nested switch: 20 Exact value of i is : 10 Exact value of j is : 20 

switch 문의 장점:

에는 여러 가지 장점이 있습니다. 스위치 문 C에서. switch 문의 주요 장점은 다음과 같습니다.

    가독성과 명확성:그만큼 스위치 문 간결하고 직관적으로 표현하는 방법을 제공합니다. 다방향 분기 코드에서. 여러 사례를 처리하면 여러 사례를 처리하는 것보다 코드를 더 체계화하고 읽기 쉽게 만들 수 있습니다. 중첩된 if-else 문 .능률:그만큼 스위치 문 일반적으로 일련의 작업보다 효율적입니다. if-else 문 여러 조건을 다룰 때. 그것은 d로 작동합니다 직접 점프 테이블 , 실행 시간 측면에서 더 빠르고 최적화됩니다.사례 기반 논리:그만큼 스위치 문 프로그램이 단일 변수의 특정 값을 기반으로 결정을 내려야 하는 시나리오에 자연스럽게 적합합니다. 이는 사례 기반 논리를 구현하는 직관적이고 간단한 방법입니다.

그만큼 스위치 문 역할을 하는 기본 케이스 사용을 지원합니다. 포괄 옵션 제공된 사례와 일치하지 않는 값의 경우. 이것 기본 케이스 명시적으로 언급되지 않은 비정상적인 입력이나 상황을 처리합니다.

switch 문의 단점:

에는 여러 가지 단점이 있습니다. 스위치 문 C에서. switch 문의 몇 가지 주요 단점은 다음과 같습니다.

    제한된 표현:에 사용된 표현 스위치 문 다음과 같은 결과를 초래해야 합니다. 정수 값(char, int, enum) 또는 호환 가능한 데이터 유형. 더 이상 처리할 수 없습니다. 복잡하거나 상수가 아닌 표현식 , 제한 유연성 일부 시나리오에서는.범위를 비교할 수 없음:같지 않은 if-else 문 , 스위치 문 값 범위를 직접 처리할 수 없습니다. switch 문의 각 사례는 특정 상수 값을 나타내므로 다양한 값을 효율적으로 처리하기가 어렵습니다.부동 소수점 숫자는 지원되지 않습니다.그만큼 스위치 문 만 받아들인다 정수형(정수) 및 값 열거형 ; 부동 소수점 숫자는 허용되지 않습니다. 처리하지 않습니다 비정수 데이터 유형 좋다 부동 소수점 정수 , 이는 일부 상황에서 문제가 될 수 있습니다.폴스루 동작: 스위치 문 가지다 '실패로 끝나다' 기본적으로 동작은 케이스에 'break' 문 , 실행은 '실패로 끝나다' 다음 케이스 블록으로 이동하세요. 적절하게 관리하지 않으면 원치 않는 동작이 발생할 수 있습니다.중복된 코드:사용하여 스위치 문 일부 상황에서는 중복 코드가 발생할 수 있으며, 특히 동일한 작업이 필요한 경우가 많을 경우 더욱 그렇습니다. 제대로 관리하지 않으면 코드가 중복될 수 있습니다.중첩된 스위치는 복잡해질 수 있습니다.다룰 때 중첩된 스위치 문 , 코드가 복잡해지고 읽기 어려워질 수 있습니다. 이러한 중첩 구조를 이해하고 유지하려면 추가적인 노력이 필요할 수 있습니다.