switch...case i C (Switch Statement i C) med eksempler
⚡ Smart opsummering
Switch-sætningen i C sammenligner ét udtryk med flere case-labels og kører den matchende blok, hvilket tilbyder et renere alternativ til lange if-else-kæder, når et program skal vælge mellem mange faste heltal- eller tegnværdier.
Hvad er Switch Statement i C?
Switch-sætningen i C tester værdien af en variabel og sammenligner den med flere cases. Når case-matchen er fundet, udføres en blok af sætninger tilknyttet den specifikke case.
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:
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
- I det givne program har vi initialiseret en variabel num med værdi 8.
- 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.
- 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 betragter følgende program, som beder brugeren om at indtaste sit eget ID. Hvis ID'et er gyldigt, vil det bede brugeren 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
- I det givne program har vi initialiseret to variabler: ID og adgangskode.
- En outer switch-konstruktion bruges til at sammenligne den værdi, der er indtastet i variabel ID. Den udfører den blok af sætninger, der er knyttet til det matchende tilfælde (når ID==500).
- Hvis bloksætningen udføres med matchende store og små bogstaver, bruges en inner switch til at sammenligne de værdier, der er indtastet i variablen password, og udføre de sætninger, der er knyttet til matchende store og små bogstaver (når password==000).
- 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
Følg disse regler, når du skriver en switch i C:
- 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.




