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.

  • 🔀 Flervejsforgrening: En switch tester ét udtryk og hopper til den matchende store/små tilfælde-etiket.
  • 🏷️ Sagetiketter: Hvert tilfælde bruger et unikt konstant heltal eller tegnmærke, der slutter på et kolon.
  • Pause-nøgleord: `break`-sætningen afslutter en sag; uden den falder udførelsen fra.
  • 🧩 Standardtilfælde: Den valgfrie standardblok kører, når ingen sagsbetegnelse matcher udtrykket.
  • ???? Skift regler: Sagsbetegnelser forbliver konstante og unikke, med kun én standardbetegnelse tilladt.

Switch-sætning i C

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:

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 initialiseret en 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 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

Indlejret switch i C

  1. I det givne program har vi initialiseret to variabler: ID og adgangskode.
  2. 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).
  3. 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).
  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

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.

Ofte Stillede Spørgsmål

AC-switch accepterer kun int-, char- og enum-værdier — aldrig flydende værdier eller strenge, da hver label skal være et konstant heltal.

Uden afbrydelse falder kontrollen igennem og kører også alle senere tilfælde - nogle gange forsætligt, men normalt en utilsigtet fejl.

Nej. C kan ikke aktivere strenge; labels skal være konstante heltal. Sammenlign i stedet tekst med strcmp i if-else.

Standard C forbyder intervaller, selvom GCC tillader en ikke-portabel case 1 … 5: udvidelse, som portabel kode bør undgå.

Nej. Standardsagen kan placeres hvor som helst; den kører kun, når ingen label matcher. Sidste placering er blot en konvention.

Ja, men sæt parenteser om kabinettets krop; ellers kan en deklaration efter en label udløse compilerfejl.

Ja. AI-kodningsassistenter udarbejder switch-blokke, tilføjer hver pause og markerer utilsigtet gennembrud. Gennemgå altid den genererede logik.

GitHub Copilot autofuldfører sagsbetegnelser, indsætter break-sætninger og konverterer lange if-else-kæder til en switch fra en kommentar.

Opsummer dette indlæg med: