C:n kytkinkäsky on vaihtoehto if-else-if -ladder-käskylle, jonka avulla voimme suorittaa useita operaatioita yksittäisen muuttujan, jota kutsutaan kytkinmuuttujaksi, eri mahdollisille arvoille. Tässä voimme määritellä useita lauseita useissa tapauksissa yhden muuttujan eri arvoille.
Switch-lauseen syntaksi c kieli on annettu alla:
switch(expression){ case value1: //code to be executed; break; //optional case value2: //code to be executed; break; //optional ...... default: code to be executed if all cases are not matched; }
Säännöt vaihtokäskylle C-kielellä
- The vaihtaa ilmaisua on oltava kokonaisluku- tai merkkityyppiä.
- The tapauksen arvo on oltava kokonaisluku tai merkkivakio.
- The tapauksen arvo voidaan käyttää vain kytkinlauseen sisällä.
- The katkeaa lausunto kytkimen tapauksessa ei ole välttämätöntä. Se on valinnainen. Jos tapauksesta ei löydy break-lausetta, kaikki tapaukset suoritetaan sovitun tapauksen jälkeen. Se tunnetaan nimellä pudota läpi C switch -lauseen tila.
Yritetään ymmärtää se esimerkkien avulla. Oletamme, että on olemassa seuraavat muuttujat.
int x,y,z; char a,b; float f;
Kelvollinen kytkin | Virheellinen kytkin | Kelvollinen tapaus | Virheellinen tapaus |
---|---|---|---|
kytkin (x) | kytkin (f) | tapaus 3; | tapaus 2.5; |
kytkin (x>y) | kytkin (x+2,5) | tapaus 'a'; | tapaus x; |
kytkin (a+b-2) | tapaus 1+2; | tapaus x+2; | |
kytkin(toiminto(x,y)) | tapaus 'x'>'y'; | tapaus 1,2,3; |
C:n kytkimen lauseen vuokaavio
Kytkimen tapauksen toiminta
Ensin kytkinkäskyssä määritetty kokonaislukulauseke arvioidaan. Tämä arvo sovitetaan sitten yksitellen eri tapauksissa annettujen vakioarvojen kanssa. Jos vastaavuus löytyy, kaikki kyseisessä tapauksessa määritetyt käskyt suoritetaan yhdessä kaikkien kyseisen tapauksen jälkeen esiintyvien tapausten kanssa, mukaan lukien oletuskäsky. Kahdella tapauksella ei voi olla samanlaisia arvoja. Jos sovitettu tapaus sisältää break-lauseen, kaikki sen jälkeen esiintyvät tapaukset ohitetaan ja ohjaus tulee ulos kytkimestä. Muussa tapauksessa kaikki vastaavaa tapausta seuraavat tapaukset suoritetaan.
Miten C switch -lause toimii?
Käydään läpi vaihe vaiheelta, kuinka kytkinlause toimii C:ssä:
Harkitse seuraavaa vaihtaa lausunto :
C-ohjelma:
#include int main() { int num = 2; switch (num) { case 1: printf('Value is 1 '); break; case 2: printf('Value is 2 '); break; case 3: printf('Value is 3 '); break; default: printf('Value is not 1, 2, or 3 '); break; } return 0; }
Lähtö
Value is 2
Vaiheittainen prosessi:
- The kytkimen muuttuja num arvioidaan. Tässä tapauksessa, yhdellä on alustettu arvo 2 .
- The arvioitu numero (2) arvo verrataan vakioihin, jotka on määritetty kunkin tapausmerkin sisällä kytkinlohko .
- The vaihtaa lausunto vastaa arvioitu arvo (2) kohdassa määritellyllä vakiolla toinen tapaus (tapaus 2) . Koska vastaavuus löytyy, ohjelma hyppää koodilohkoon, joka liittyy koodiin vastaava tapaus (tapaus 2) .
- Kohteeseen liittyvä koodilohko tapaus 2 suoritetaan, mikä tulostaa 'Arvo on 2' konsoliin.
- The 'tauko' avainsana on koodilohkossa tapaus 2 . Tämän seurauksena ohjelma katkeaa kytkinkäskystä heti koodilohkon suorittamisen jälkeen.
- Ohjelman ohjaus jatkuu sen jälkeen vaihtaa lausunto ja kaikki seuraavat lausunnot vaihtaa lausunto teloitetaan. Tässä tapauksessa vaihdon jälkeen ei ole käskyjä, joten ohjelma päättyy.
- The vaihtaa lausunto arvioivat arvon muuttuja num , löysi osuman tapauksen 2 kanssa, suoritti vastaavan koodilohkon ja poistui sitten kytkinlohko läsnäolon vuoksi 'break'-lause .
Esimerkki kytkinkäskystä C:ssä
Katsotaanpa yksinkertainen esimerkki C-kielen vaihtokäskystä.
#include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equals to 10'); break; case 50: printf('number is equal to 50'); break; case 100: printf('number is equal to 100'); break; default: printf('number is not equal to 10, 50 or 100'); } return 0; }
Lähtö
parafraasi if rudyard kiplingillä
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Kytkintapauksen esimerkki 2
#include int main() { int x = 10, y = 5; switch(x>y && x+y>0) { case 1: printf('hi'); break; case 0: printf('bye'); break; default: printf(' Hello bye '); } }
Lähtö
hi
Katko ja oletusavainsana Switch-lauseessa
Selitämme ja määrittelemme 'tauko' ja 'oletusavainsanat'. kytkinkäskyn yhteydessä esimerkkikoodin ja tulosteen kanssa.
1. Katkoavainsana:
The 'break' avainsana käytetään kunkin tapauksen koodilohkossa kytkinkäskyn päättämiseen ennenaikaisesti. Kun ohjelma kohtaa a 'break'-lause kotelon sisällä, se poistuu välittömästi vaihtaa lausunto , joka estää myöhempien tapauslohkojen suorittamisen. The 'break'-lause on ratkaisevan tärkeää vaihtolauseiden välttämiseksi' 'pudota läpi' käyttäytymistä.
Esimerkki:
Otetaan ohjelma ymmärtääksesi käytön taukoavainsana in C.
#include int main() { int num = 3; switch (num) { case 1: printf('Value is 1 '); break; // Exit the switch statement after executing this case block case 2: printf('Value is 2 '); break; // Exit the switch statement after executing this case block case 3: printf('Value is 3 '); break; // Exit the switch statement after executing this case block default: printf('Value is not 1, 2, or 3 '); break; // Exit the switch statement after executing the default case block } return 0; }
Lähtö
Value is 3
Selitys:
Tässä esimerkissä vaihtaa lausunto arvioi arvon muuttuja num (mikä on 3 ) ja sopii siihen tapaus 3 . Kohteeseen liittyvä koodilohko tapaus 3 suoritetaan, tulostus 'Arvo on 3' konsoliin. The 'break'-lause sisällä tapaus 3 varmistaa, että ohjelma poistuu kytkinkäskystä välittömästi tämän tapauslohkon suorittamisen jälkeen, mikä estää muiden tapausten suorittamisen.
2. Oletusavainsana:
Kun mikään niistä tapausvakiot sovittaa arvioitu ilmaisu , se toimii a kaiken kattava tapaus . Jos vastaavaa tapausta ei ole ja a 'oletus' tapaus on olemassa , koodilohkoon liittyvä 'oletus' tapaus ajetaan. Sitä käytetään usein käsittelemään tilanteita, joissa mikään ilmoitetuista tilanteista ei koske annettua syötettä.
Esimerkki:
Otetaan ohjelma ymmärtääksesi käytön oletusavainsana in C.
#include int main() { int num = 5; switch (num) { case 1: printf('Value is 1 '); break; case 2: printf('Value is 2 '); break; case 3: printf('Value is 3 '); break; default: printf('Value is not 1, 2, or 3 '); break; // Exit the switch statement after executing the default case block } return 0; }
Lähtö
Value is not 1, 2, or 3
Selitys:
Tässä esimerkissä vaihtaa lausunto tutkii arvon muuttuja num (mikä on 5 ). Koska mikään tapaus ei vastaa numeroa, ohjelma suorittaa koodin, joka liittyy koodiin 'oletus' tapaus . The 'break'-lause sisällä 'oletus' tapaus varmistaa, että ohjelma poistuu vaihtaa lausunto suorittamisen jälkeen 'oletus' tapauslohko.
Molemmat 'tauko' ja 'oletusavainsanat'. niillä on keskeinen rooli kytkinkäskyn suoritusvirran ohjaamisessa. The 'break'-lause auttaa estämään putoamiskäyttäytymistä, kun taas 'oletus' tapaus tarjoaa tavan käsitellä vertaansa vailla olevia tapauksia.
C Switch-lause on läpikuultava
C-kielessä kytkinlause on fall through; se tarkoittaa, että jos et käytä break-lausetta kytkintapauksessa, kaikki tapaukset vastaavan tapauksen jälkeen suoritetaan.
Yritetään ymmärtää kytkinlauseen putoamistila alla olevan esimerkin avulla.
#include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equal to 10 '); case 50: printf('number is equal to 50 '); case 100: printf('number is equal to 100 '); default: printf('number is not equal to 10, 50 or 100'); } return 0; }
Lähtö
enter a number:10 number is equal to 10 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Lähtö
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Sisäkkäinen kytkimen tapausseloste
Voimme käyttää niin monta switch-lausetta kuin haluamme switch-käskyn sisällä. Tällaisia lausekkeita kutsutaan sisäkkäisiksi kytkintapauslauseiksi. Harkitse seuraavaa esimerkkiä.
#include int main () { int i = 10; int j = 20; switch(i) { case 10: printf('the value of i evaluated in outer switch: %d ',i); case 20: switch(j) { case 20: printf('The value of j evaluated in nested switch: %d ',j); } } printf('Exact value of i is : %d ', i ); printf('Exact value of j is : %d ', j ); return 0; }
Lähtö
the value of i evaluated in outer switch: 10 The value of j evaluated in nested switch: 20 Exact value of i is : 10 Exact value of j is : 20
Kytkinlauseen edut:
Siinä on useita etuja vaihtaa lausunto C. Joitakin kytkinlausekkeen tärkeimpiä etuja ovat seuraavat:
The vaihtaa lausunto tukee oletustapauksen käyttöä, joka toimii a kaiken kattava vaihtoehto arvoille, jotka eivät vastaa mitään annettuja tapauksia. Tämä oletustapaus käsittelee epätavallisia syötteitä tai olosuhteita, joita ei ole nimenomaisesti ilmoitettu.
Kytkinlauseen haitat:
Siinä on useita haittoja vaihtaa lausunto C:ssä. Jotkut switch-lauseen tärkeimmistä haitoista ovat seuraavat: