switch...case i C (Switch Statement in C) med eksempler
Hva er Switch Statement i C?
Bytt utsagn i C tester verdien av en variabel og sammenligner den med flere tilfeller. Når saksmatchen er funnet, utføres en blokk med utsagn knyttet til den aktuelle saken.
Hvert tilfelle i en blokk av en bryter har et annet navn/nummer som omtales som en identifikator. Verdien oppgitt av brukeren sammenlignes med alle tilfellene inne i bryterblokken til matchen er funnet.
Hvis en saksmatch IKKE blir funnet, blir standardsetningen utført, og kontrollen går ut av bryterblokken.
Bytt sakssyntaks
En generell 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;
- Uttrykket kan være heltallsuttrykk eller et tegnuttrykk.
- Verdi-1, 2, n er kasusetiketter som brukes til å identifisere hvert tilfelle individuelt. Husk at saksetiketter ikke skal være de samme, da det kan skape et problem mens du kjører et program. Anta at vi har to tilfeller med samme etikett som '1'. Mens du kjører programmet, vil saken som vises først bli utført selv om du vil at programmet skal kjøre en ny sak. Dette skaper problemer i programmet og gir ikke ønsket utgang.
- Etiketter på etui ender alltid med et kolon ( : ). Hvert av disse tilfellene er knyttet til en blokk.
- En blokk er ikke annet enn flere utsagn som er gruppert for en bestemt sak.
- Hver gang bryteren utføres, sammenlignes verdien av testuttrykk med alle tilfellene som vi har definert inne i bryteren. Anta at testuttrykket inneholder verdi 4. Denne verdien sammenlignes med alle tilfellene inntil kasus hvis etikett fire finnes i programmet. Så snart en sak er funnet, blir blokken med utsagn knyttet til den aktuelle saken utført og kontrollen går ut av bryteren.
- Nøkkelordet pause i hvert tilfelle indikerer slutten på en bestemt sak. Hvis vi ikke setter pausen i hver sak, vil bryteren i C fortsette å utføre alle sakene til slutten er nådd, selv om den spesifikke saken er utført. Dette bør ikke skje; derfor må vi alltid sette brudd nøkkelord i hvert tilfelle. Break vil avslutte saken når den er utført og kontrollen vil falle ut av bryteren.
- Standard tilfellet er valgfritt. Når verdien av testuttrykk ikke samsvarer med noen av tilfellene inne i bryteren, vil standarden bli utført. Ellers er det ikke nødvendig å skrive standard i bryteren.
- Når svitsjen er utført, vil kontrollen gå til setningen-x, og kjøringen av et program vil fortsette.
Bytt erklæring flytskjema
Følgende diagram illustrerer hvordan et tilfelle velges i bryterhus:
Eksempel på brytertilfelle i C
Følgende program illustrerer bruken av bryteren:
#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; }
Utgang:
Value is 8
- I det gitte programmet har vi forklart initialisert a variabel num med verdi 8.
- En bryterkonstruksjon brukes til å sammenligne verdien som er lagret i variabel num og utføre blokken med setninger som er knyttet til det matchede tilfellet.
- I dette programmet, siden verdien som er lagret i variabel num er åtte, vil en bryter utføre saken hvis saksetikett er 8. Etter å ha utført saken, vil kontrollen falle ut av bryteren og programmet vil bli avsluttet med vellykket resultat av skrive ut verdien på utdataskjermen.
Prøv å endre verdien av variabel num og legg merke til endringen i utdata.
For eksempel vurderer 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");}}
Utgang:
Other programming language
Når du arbeider med bryterhus i C, grupperer du flere saker med unike etiketter. Du må introdusere en break-setning i hvert tilfelle for å forgrene seg på slutten av en switch-setning.
Den valgfrie standardsaken kjører når ingen andre treff.
Vi vurderer følgende brytersetning:
#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");}}
Utgang:
Four, Five, or Six.
Nestet bryter i C
In C, kan vi ha en indre bryter innebygd i en ytre bryter. Dessuten kan kasuskonstantene til den indre og ytre bryteren ha felles verdier og uten noen konflikter.
Vi vurderer følgende program som brukeren skal skrive inn sin egen ID, hvis IDen er gyldig vil den be ham om å skrive inn passordet sitt, hvis passordet er riktig vil programmet skrive ut navnet på brukeren, ellers vil programmet skrive ut Feil Passord og hvis IDen ikke eksisterer, vil programmet skrive ut Feil 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; } }
Utgang:
Plese Enter Your ID: 500 Enter your password: 000 Welcome Dear Programmer
- I det gitte programmet har vi forklart initialiserte to variabler: ID og passord
- En ytre bryterkonstruksjon brukes til å sammenligne verdien angitt i variabel ID. Den utfører blokken med setninger som er knyttet til den matchede saken (når ID==500).
- Hvis blokksetningen utføres med det matchede tilfellet, brukes en indre bryter til å sammenligne verdiene som er angitt i variabelpassordet og utføre setningene som er knyttet til tilfellet med samsvar (når passord==000).
- Ellers vil brytersaken utløse standardsaken og skrive ut den aktuelle teksten angående programoversikten.
Hvorfor trenger vi et Switch-deksel?
Det er ett potensielt problem med if-else-uttalelse som er kompleksiteten til programmet øker hver gang antallet alternative veier øker. Hvis du bruker flere if-else-konstruksjoner i programmet, kan et program bli vanskelig å lese og forstå. Noen ganger kan det til og med forvirre utvikleren som selv skrev programmet.
Løsningen på dette problemet er switch-setningen.
Regler for bytteerklæring
- Et uttrykk må alltid utføres for et resultat.
- Etikettene må være konstante og unike.
- Etiketter må slutte med et kolon ( : ).
- Et pausenøkkelord må være til stede i hvert tilfelle.
- Det kan bare være én standardetikett.
- Vi kan neste flere brytersetninger.
Sammendrag
- En bryter er en beslutningskonstruksjon i 'C».
- En bryter brukes i et program der flere beslutninger er involvert.
- En svitsj må inneholde et kjørbart testuttrykk.
- Hver sak må inneholde et pausenøkkelord.
- Saksetiketten må være konstant og unik.
- Standard er valgfritt.
- Flere brytersetninger kan nestes i hverandre.