switch...case in C (Switch Statement in C) met voorbeelden

Wat is Switch-verklaring in C?

Switch-instructie in C test de waarde van een variabele en compares het met meerdere gevallen. Zodra de casematch is gevonden, wordt een blok met instructies die bij dat specifieke geval horen, uitgevoerd.

Elk geval in een blok van een schakelaar heeft een andere naam/nummer, dit wordt een identificatie genoemd. De door de gebruiker opgegeven waarde wordt vergeleken met alle cases in het schakelblok totdat de match is gevonden.

Als er GEEN casematch wordt gevonden, wordt de standaardinstructie uitgevoerd en verlaat de besturing het schakelblok.

Syntaxis van hoofdlettergebruik

Een algemene syntaxis van hoe switch-case wordt geïmplementeerd in een 'C'-programma is als volgt:

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;
  • De expressie kan een geheeltallige expressie of een tekenexpressie zijn.
  • Waarde-1, 2, n zijn zaaklabels die worden gebruikt om elk geval afzonderlijk te identificeren. Houd er rekening mee dat de caselabels niet hetzelfde mogen zijn, omdat dit een probleem kan veroorzaken bij het uitvoeren van een programma. Stel dat we twee koffers hebben met hetzelfde label als '1'. Tijdens het uitvoeren van het programma wordt vervolgens het eerste geval uitgevoerd, ook al wilt u dat het programma een tweede geval uitvoert. Dit zorgt voor problemen in het programma en levert niet de gewenste output op.
  • Caselabels eindigen altijd met een dubbele punt ( : ). Elk van deze gevallen is gekoppeld aan een blok.
  • Een blok is niets anders dan meerdere instructies die voor een bepaald geval zijn gegroepeerd.
  • Telkens wanneer de switch wordt uitgevoerd, wordt de waarde van test-expressie vergeleken met alle gevallen die we binnen de switch hebben gedefinieerd. Stel dat de testuitdrukking de waarde 4 bevat. Deze waarde wordt vergeleken met alle gevallen tot het geval waarvan het label vier in het programma wordt gevonden. Zodra een geval wordt gevonden, wordt het blok met uitspraken dat bij dat specifieke geval hoort, uitgevoerd en verdwijnt de controle uit de schakelaar.
  • Het break-sleutelwoord geeft in elk geval het einde van een bepaald geval aan. Als we de onderbreking niet in elk geval plaatsen, zal de schakelaar in C, ook al wordt het specifieke geval uitgevoerd, alle gevallen blijven uitvoeren totdat het einde is bereikt. Dit zou niet mogen gebeuren; daarom moeten we in elk geval altijd het break-trefwoord invoeren. Break beëindigt de case zodra deze is uitgevoerd en de besturing valt uit de schakelaar.
  • Het standaardgeval is optioneel. Wanneer de waarde van test-expressie niet overeenkomt met een van de cases binnen de switch, wordt de standaard uitgevoerd. Anders is het niet nodig om standaard in de switch te schrijven.
  • Zodra de schakelaar is uitgevoerd, gaat de besturing naar statement-x en wordt de uitvoering van een programma voortgezet.

Stroomdiagram van schakelverklaring

Following diagram illustreert hoe een kast wordt geselecteerd in een schakelkast:

Stroomdiagram van schakelverklaring
Hoe schakelaar werkt

Voorbeeld van schakelkast in C

Following programma illustreert het gebruik van schakelaar:

#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

Voorbeeld van schakelkast in C

  1. In het gegeven programma hebben we geïnitialiseerde a uitgelegd variabele getal met waarde 8.
  2. Er wordt een switch-constructie gebruikt om de waarde die is opgeslagen in de variabele num te vergelijken en het blok met instructies uit te voeren dat bij het overeenkomende geval hoort.
  3. Omdat in dit programma de waarde opgeslagen in variabele num acht is, zal een switch de case uitvoeren waarvan het case-label 8 is. Na het uitvoeren van de case valt de besturing uit de switch en wordt het programma beëindigd met het succesvolle resultaat door het afdrukken van de waarde op het uitvoerscherm.

Probeer de waarde van variabele num te veranderen en merk de verandering in de uitvoer op.

We beschouwen bijvoorbeeld de following programma dat standaard:

#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

Wanneer u in C met schakelkast werkt, groepeert u meerdere kasten met unieke labels. U moet in elk geval een break-instructie invoeren om aan het einde van een switch-instructie te vertakken.

Het optionele standaardgeval wordt uitgevoerd als er geen andere overeenkomsten zijn gemaakt.

Wij beschouwen het volgendewing schakelaarverklaring:

#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.

Geneste schakelaar in C

In C, kunnen we een binnenschakelaar in een buitenschakelaar laten inbouwen. Ook kunnen de gevalsconstanten van de binnenste en buitenste schakelaar gemeenschappelijke waarden hebben en zonder conflicten.

Wij overwegen het volgendewing programma waarin de gebruiker zijn eigen ID moet typen. Als de ID geldig is, zal het hem vragen zijn wachtwoord in te voeren. Als het wachtwoord correct is, zal het programma de naam van de gebruiker afdrukken, anders zal het programma een onjuist wachtwoord afdrukken en als het ID bestaat niet, het programma zal een onjuiste ID afdrukken

#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

Geneste schakelaar in C

  1. In het gegeven programma hebben we twee variabelen geïnitialiseerd: ID en wachtwoord
  2. Er wordt een buitenste schakelconstructie gebruikt om de in variabele ID ingevoerde waarde te vergelijken. Het voert het blok met instructies uit dat is gekoppeld aan het overeenkomende geval (wanneer ID==500).
  3. Als de blokinstructie wordt uitgevoerd met de overeenkomende hoofdlettergebruik, wordt een interne schakelaar gebruikt om de waarden die zijn ingevoerd in het variabele wachtwoord te vergelijken en de instructies uit te voeren die zijn gekoppeld aan de overeenkomende hoofdlettergebruik (wanneer wachtwoord==000).
  4. Anders zal de schakelkast de standaardcasus activeren en de juiste tekst met betrekking tot het programmaoverzicht afdrukken.

Waarom hebben we een Switch-behuizing nodig?

Er is één potentieel probleem met de if-else verklaring dat is de complexDe kwaliteit van het programma neemt toe naarmate het aantal alternatieve paden toeneemt. Als u meerdere if-else-constructies in het programma gebruikt, kan een programma lastig te lezen en te begrijpen zijn. Soms kan het zelfs de ontwikkelaar die het programma heeft geschreven, in verwarring brengen.

De oplossing voor dit probleem is de switch-instructie.

Regels voor de switch-instructie

  • Een expressie moet altijd worden uitgevoerd tot een resultaat.
  • Caselabels moeten constant en uniek zijn.
  • Caselabels moeten eindigen met een dubbele punt ( : ).
  • In elk geval moet er een break-trefwoord aanwezig zijn.
  • Er kan slechts één standaardlabel zijn.
  • We kunnen meerdere switch-instructies nesten.

Samengevat

  • Een schakelaar is een beslissingsconstructie in 'C. '
  • Een schakelaar wordt gebruikt in een programma waarbij meerdere beslissingen betrokken zijn.
  • Een switch moet een uitvoerbare testexpressie bevatten.
  • Elke case moet een break-trefwoord bevatten.
  • Het caselabel moet constant en uniek zijn.
  • De standaardinstelling is optioneel.
  • Er kunnen meerdere switch-instructies in elkaar worden genest.