switch...case i C (Switch Statement i C) med eksempler

Hvad er Switch Statement i C?

Skift udsagn i C tester værdien af ​​en variabel og sammenligner den med flere tilfælde. Når sagsmatchet er fundet, udføres en blok af udsagn, der er knyttet til den pågældende sag.

Hvert tilfælde i en blok af en switch har et andet navn/nummer, som omtales som en identifikator. Den værdi, som brugeren angiver, sammenlignes med alle sagerne inde i kontaktblokken, indtil matchen er fundet.

Hvis et case-match IKKE findes, udføres standardsætningen, og kontrollen går ud af switch-blokken.

Skift sagssyntaks

En generel syntaks for, hvordan switch-case implementeres i et 'C'-program, er som følger:

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;
  • Udtrykket kan være heltalsudtryk eller et tegnudtryk.
  • Værdi-1, 2, n er sagsetiketter, som bruges til at identificere hver sag individuelt. Husk, at sagsetiketter ikke bør være de samme, da det kan skabe et problem under afvikling af et program. Antag, at vi har to tilfælde med samme etiket som '1'. Så mens programmet udføres, vil sagen, der vises først, blive udført, selvom du ønsker, at programmet skal udføre en anden sag. Dette skaber problemer i programmet og giver ikke det ønskede output.
  • Sagsetiketter slutter altid med et kolon ( : ). Hver af disse sager er forbundet med en blok.
  • En blok er intet andet end flere udsagn, som er grupperet for en bestemt sag.
  • Når switchen udføres, sammenlignes værdien af ​​test-ekspression med alle de tilfælde, som vi har defineret inde i switchen. Antag, at testudtrykket indeholder værdi 4. Denne værdi sammenlignes med alle tilfældene indtil tilfælde, hvis etiket fire findes i programmet. Så snart en sag er fundet, udføres blokken af ​​udsagn, der er knyttet til den pågældende sag, og kontrollen går ud af kontakten.
  • Nøgleordet pause angiver i hvert tilfælde slutningen af ​​en bestemt sag. Hvis vi ikke sætter pausen i hver sag, så selvom den specifikke sag udføres, vil switchen i C fortsætte med at udføre alle sagerne indtil slutningen er nået. Dette bør ikke ske; derfor er vi altid nødt til at sætte break søgeord i hvert enkelt tilfælde. Break vil afslutte sagen, når den er udført, og styringen vil falde ud af kontakten.
  • Standardcasen er valgfri. Når værdien af ​​test-udtryk ikke matches med nogen af ​​tilfældene inde i switchen, vil standarden blive udført. Ellers er det ikke nødvendigt at skrive standard i switchen.
  • Når switchen er udført, vil kontrollen gå til sætningen-x, og udførelsen af ​​et program vil fortsætte.

Skift erklæring Flowchart

Følgende diagram illustrerer, hvordan en sag vælges i switch-case:

Skift erklæring Flowchart
Sådan fungerer switch

Switch Case Eksempel i C

Følgende program illustrerer brugen af ​​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;
    }

Output:

Value is 8

Switch Case Eksempel i C

  1. I det givne program har vi forklaret initialiseret a variabel num med værdi 8.
  2. En switch-konstruktion bruges til at sammenligne værdien, der er gemt i variabel num, og udføre den blok af sætninger, der er knyttet til det matchede tilfælde.
  3. I dette program, da værdien lagret i variabel num er otte, vil en switch udføre sagen, hvis case-label er 8. Efter udførelse af sagen vil styringen falde ud af switchen og programmet vil blive afsluttet med det vellykkede resultat af udskrivning af værdien på outputskærmen.

Prøv at ændre værdien af ​​variabel num og bemærk ændringen i outputtet.

For eksempel overvejer vi følgende program, som er standard:

#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");}}

Output:

Other programming language

Når du arbejder med switch case i C, grupperer du flere cases med unikke labels. Du skal indføre en break-sætning i hvert tilfælde for at forgrene i slutningen af ​​en switch-sætning.

Den valgfri standardsag kører, når der ikke foretages andre matchninger.

Vi overvejer følgende switch-erklæring:

#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");}}

Output:

Four, Five, or Six.

Indlejret switch i C

In C, kan vi have en indre kontakt indlejret i en ydre kontakt. Også kasuskonstanterne for den indre og ydre kontakt kan have fælles værdier og uden nogen konflikter.

Vi overvejer følgende program, som brugeren skal indtaste sit eget ID, hvis ID'et er gyldigt vil det bede ham om at indtaste sin adgangskode, hvis adgangskoden er korrekt vil programmet udskrive brugerens navn, ellers vil programmet udskrive Forkert Adgangskode, og hvis ID'et ikke findes, vil programmet udskrive Forkert 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;
        }
}

Output:

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

Indlejret switch i C

  1. I det givne program har vi forklaret initialiserede to variabler: ID og password
  2. En ydre switch-konstruktion bruges til at sammenligne værdien indtastet i variabel ID. Det udfører den blok af sætninger, der er knyttet til den matchede sag (når ID==500).
  3. Hvis bloksætningen udføres med det matchede tilfælde, bruges en indre switch til at sammenligne værdierne, der er indtastet i den variable adgangskode, og udføre sætningerne forbundet med det matchede tilfælde (når password==000).
  4. Ellers vil switch-casen udløse standardcasen og udskrive den relevante tekst vedrørende programoversigten.

Hvorfor har vi brug for en Switch-etui?

Der er et potentielt problem med if-else erklæring hvilket er kompleksiteten af ​​programmet stiger, når antallet af alternative vej stiger. Hvis du bruger flere if-else-konstruktioner i programmet, kan et program blive svært at læse og forstå. Nogle gange kan det endda forvirre udvikleren, der selv skrev programmet.

Løsningen på dette problem er switch-sætningen.

Regler for skifteerklæring

  • Et udtryk skal altid udføres til et resultat.
  • Sagsetiketter skal være konstante og unikke.
  • Sagsetiketter skal slutte med et kolon ( : ).
  • Et pausenøgleord skal være til stede i hvert enkelt tilfælde.
  • Der kan kun være én standardetiket.
  • Vi kan indlejre flere switch-udsagn.

Resumé

  • En switch er en beslutningskonstruktion i 'C. '
  • En switch bruges i et program, hvor flere beslutninger er involveret.
  • En switch skal indeholde et eksekverbart testudtryk.
  • Hver case skal indeholde et pausenøgleord.
  • Sagetiketten skal være konstant og unik.
  • Standarden er valgfri.
  • Flere switch-sætninger kan indlejres i hinanden.