switch...fall i C (Switch Statement i C) med exempel
Vad är Switch Statement i C?
Byt uttalande i C testar värdet på en variabel och jämför den med flera fall. När fallmatchningen har hittats exekveras ett block med uttalanden som är associerade med det specifika fallet.
Varje fall i ett block av en switch har ett annat namn/nummer som kallas en identifierare. Värdet som användaren tillhandahåller jämförs med alla fall inuti switchblocket tills matchningen hittas.
Om en fallmatchning INTE hittas, exekveras standardsatsen och kontrollen går ut ur switchblocket.
Byt växelsyntax
En allmän syntax för hur switch-case implementeras i ett "C"-program är följande:
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;
- Uttrycket kan vara heltalsuttryck eller ett teckenuttryck.
- Värde-1, 2, n är falletiketter som används för att identifiera varje fall individuellt. Kom ihåg att falletiketter inte bör vara samma eftersom det kan skapa problem när ett program körs. Anta att vi har två fall med samma etikett som '1'. Sedan när programmet körs kommer fallet som visas först att köras även om du vill att programmet ska köra ett andra fall. Detta skapar problem i programmet och ger inte önskat resultat.
- Etiketter för fodral slutar alltid med ett kolon ( : ). Vart och ett av dessa fall är associerat med ett block.
- Ett block är inget annat än flera påståenden som är grupperade för ett visst fall.
- Närhelst växeln exekveras jämförs värdet av testuttryck med alla fall som vi har definierat inuti växeln. Antag att testuttrycket innehåller värde 4. Detta värde jämförs med alla fall tills fallet vars etikett fyra finns i programmet. Så snart ett fall hittas exekveras blocket av uttalanden som är associerade med det specifika fallet och kontrollen går ut ur switchen.
- Nyckelordet break i varje fall indikerar slutet på ett visst fall. Om vi inte sätter brytningen i varje fall kommer växeln i C att fortsätta att utföra alla fall tills slutet nås, trots att det specifika fallet exekveras. Detta bör inte hända; därför måste vi alltid sätta break nyckelord i varje fall. Break kommer att avsluta fallet när det har utförts och kontrollen kommer att falla ur omkopplaren.
- Standardfallet är valfritt. Närhelst värdet på testuttryck inte matchas med något av fallen inuti switchen, kommer standarden att exekveras. Annars är det inte nödvändigt att skriva standard i switchen.
- När växlingen är utförd kommer kontrollen att gå till sats-x, och exekveringen av ett program kommer att fortsätta.
Byt uttalande flödesschema
Följande diagram illustrerar hur ett fall väljs i switch case:
Switch Case Exempel i C
Följande program illustrerar användningen av 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; }
Produktion:
Value is 8
- I det givna programmet har vi förklarat initialiserad a variabel num med värde 8.
- En switch-konstruktion används för att jämföra värdet lagrat i variabeln num och exekvera blocket av satser som är associerade med det matchade fallet.
- I det här programmet, eftersom värdet lagrat i variabeln num är åtta, kommer en switch att exekvera fallet vars case-etikett är 8. Efter exekvering av fallet kommer kontrollen att falla ut ur switchen och programmet avslutas med framgångsrikt resultat av skriva ut värdet på utmatningsskärmen.
Försök att ändra värdet på variabel num och märk förändringen i utdata.
Till exempel betraktar vi följande program som är 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");}}
Produktion:
Other programming language
När du arbetar med switch case i C grupperar du flera fall med unika etiketter. Du måste införa en break-sats i varje fall för att förgrena sig i slutet av en switch-sats.
Det valfria standardfallet körs när inga andra matchningar görs.
Vi överväger följande switch-sats:
#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");}}
Produktion:
Four, Five, or Six.
Kapslad switch i C
In C, kan vi ha en inre switch inbäddad i en yttre switch. Dessutom kan fallkonstanterna för den inre och yttre omkopplaren ha gemensamma värden och utan några konflikter.
Vi överväger följande program som användaren ska skriva in sitt eget ID, om ID är giltigt kommer det att be honom att ange sitt lösenord, om lösenordet är korrekt kommer programmet att skriva ut användarens namn, annars kommer programmet att skriva ut Felaktigt Lösenord och om ID inte finns kommer programmet att skriva ut Felaktigt 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; } }
Produktion:
Plese Enter Your ID: 500 Enter your password: 000 Welcome Dear Programmer
- I det givna programmet har vi förklarat initialiserade två variabler: ID och lösenord
- En yttre omkopplarkonstruktion används för att jämföra värdet som anges i variabel-ID. Den exekverar blocket med satser som är associerade med det matchade fallet (när ID==500).
- Om blocksatsen exekveras med det matchade fallet, används en inre switch för att jämföra värdena som anges i variabellösenordet och exekvera satserna som är kopplade till det matchade fallet (när lösenord==000).
- Annars kommer växlingsfallet att utlösa standardfallet och skriva ut lämplig text angående programkonturen.
Varför behöver vi ett Switch-fodral?
Det finns ett potentiellt problem med if-else uttalande vilket är att programmets komplexitet ökar närhelst antalet alternativa vägar ökar. Om du använder flera if-else-konstruktioner i programmet kan ett program bli svårt att läsa och förstå. Ibland kan det till och med förvirra utvecklaren som själv skrev programmet.
Lösningen på detta problem är switch-satsen.
Regler för switch statement
- Ett uttryck måste alltid köras till ett resultat.
- Fodraletiketter måste vara konstanta och unika.
- Fodraletiketter måste sluta med ett kolon ( : ).
- Ett brytnyckelord måste finnas i varje fall.
- Det kan bara finnas en standardetikett.
- Vi kan kapsla flera switch-satser.
Sammanfattning
- En switch är en beslutsfattande konstruktion i 'C. '
- En switch används i ett program där flera beslut är inblandade.
- En switch måste innehålla ett körbart testuttryck.
- Varje fall måste innehålla ett brytnyckelord.
- Etiketten måste vara konstant och unik.
- Standard är valfritt.
- Flera switch-satser kan kapslas in i varandra.