Komutatoriaus teiginys C yra alternatyvus if-else-if kopėčių sakinys, leidžiantis atlikti kelias operacijas su skirtingomis galimomis vieno kintamojo, vadinamo perjungimo kintamuoju, reikšmėmis. Čia mes galime apibrėžti įvairius teiginius keliais atvejais skirtingoms vieno kintamojo reikšmėms.
„Switch“ teiginio sintaksė c kalba pateikta žemiau:
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; }
Komutatoriaus teiginio C kalba taisyklės
- The perjungimo išraiška turi būti sveikojo skaičiaus arba simbolio tipo.
- The atvejo vertė turi būti sveikasis skaičius arba simbolių konstanta.
- The atvejo vertė galima naudoti tik jungiklio teiginyje.
- The pertraukos pareiškimas jungiklio atveju nebūtina. Tai neprivaloma. Jei byloje nerasta lūžio sakinio, visi atvejai bus vykdomi esant po suderinto atvejo. Jis žinomas kaip prakristi C jungiklio teiginio būsena.
Pabandykime tai suprasti pavyzdžiais. Darome prielaidą, kad yra šie kintamieji.
int x,y,z; char a,b; float f;
Galiojantis jungiklis | Netinkamas jungiklis | Tinkamas atvejis | Netinkamas atvejis |
---|---|---|---|
jungiklis (x) | jungiklis (f) | 3 atvejis; | atvejis 2.5; |
jungiklis (x>y) | jungiklis (x+2,5) | atvejis „a“; | atvejis x; |
jungiklis (a+b-2) | atvejis 1+2; | atvejis x+2; | |
jungiklis (funkc(x,y)) | atvejis 'x'>'y'; | atvejis 1,2,3; |
Jungiklio teiginio schema C
Jungiklio korpuso pareiškimo veikimas
Pirmiausia įvertinama jungiklio sakinyje nurodyta sveikojo skaičiaus išraiška. Tada ši vertė po vieną suderinama su skirtingais atvejais pateiktomis pastoviomis reikšmėmis. Jei randama atitiktis, visi tuo atveju nurodyti teiginiai vykdomi kartu su visais atvejais, esančiais po to, įskaitant numatytąjį sakinį. Dviejų atvejų reikšmės negali būti panašios. Jei suderintame atvejis yra pertraukos sakinys, visi po to esantys atvejai bus praleisti, o valdiklis išeis iš jungiklio. Priešingu atveju bus vykdomi visi atvejai, einantys po suderinto atvejo.
Kaip veikia C jungiklio teiginys?
Pažvelkime žingsnis po žingsnio, kaip jungiklio teiginys veikia C:
Apsvarstykite šiuos dalykus jungiklio pareiškimas :
C programa:
#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; }
Išvestis
Value is 2
Žingsnis po žingsnio procesas:
- The jungiklio kintamasis nr yra vertinamas. Tokiu atveju, ant vieno yra inicijuojamas su 2 vertė .
- The įvertintas skaičius (2) reikšmė lyginamas su konstantomis, nurodytomis kiekvieno atvejo etiketėje viduje jungiklio blokas .
- The jungiklio pareiškimas atitinka įvertinta vertė (2) su konstanta, nurodyta antras atvejis (2 atvejis) . Kadangi yra atitiktis, programa pereina prie kodo bloko, susieto su atitinkantis atvejis (2 atvejis) .
- Kodo blokas, susietas su 2 atvejis yra vykdomas, kuris spausdinamas „Vertė yra 2“ prie konsolės.
- The 'pertrauka' raktinis žodis yra kodo bloke 2 atvejis . Dėl to programa išeina iš jungiklio teiginio iškart po kodo bloko vykdymo.
- Programos valdymas tęsiamas ir po to jungiklio pareiškimas , ir visi po to teiginiai jungiklio pareiškimas yra įvykdyti. Šiuo atveju po perjungimo teiginių nėra, todėl programa baigiasi.
- The jungiklio pareiškimas įvertino vertę kintamasis nr , rado atitiktį su 2 atveju, įvykdė atitinkamą kodo bloką ir išėjo iš jungiklio blokas dėl buvimo „pertraukos“ teiginys .
Komutatoriaus teiginio pavyzdys C
Pažiūrėkime paprastą C kalbos perjungimo teiginio pavyzdį.
#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; }
Išvestis
sąrašo mazgas java
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Perjungimo atvejo pavyzdys 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 '); } }
Išvestis
hi
Pertrauka ir numatytasis raktinis žodis „Switch“ teiginyje
Leiskite mums paaiškinti ir apibrėžti 'pertrauka' ir „numatytieji“ raktiniai žodžiai jungiklio teiginio kontekste kartu su pavyzdiniu kodu ir išvestimi.
1. Pertraukos raktinis žodis:
The „pertraukos“ raktinis žodis yra naudojamas kiekvieno atvejo kodo bloke, kad per anksti būtų nutrauktas perjungimo sakinys. Kai programa susiduria su a „pertraukos“ teiginys korpuso bloko viduje, jis iš karto išeina iš jungiklio pareiškimas , neleidžiantis vykdyti tolesnių bylų blokų. The „pertraukos“ teiginys yra labai svarbus norint išvengti perjungimo teiginių 'kritimas' elgesį.
Pavyzdys:
Paimkime programą, kad suprastume, kaip naudoti pertraukos raktinis žodis 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; }
Išvestis
Value is 3
Paaiškinimas:
Šiame pavyzdyje jungiklio pareiškimas vertina vertę kintamasis nr (kuris yra 3 ) ir atitinka jį 3 atvejis . Kodo blokas, susietas su 3 atvejis yra vykdomas, spausdinamas „Vertė yra 3“ prie konsolės. The „pertraukos“ teiginys viduje 3 atvejis užtikrina, kad programa išeis iš jungiklio teiginio iškart po šio atvejo bloko vykdymo, užkertant kelią bet kokių kitų atvejų vykdymui.
2. Numatytasis raktinis žodis:
Kai nė vienas iš atvejo konstantos atitinka įvertinta išraiška , jis veikia kaip a visapusiškas atvejis . Jei nėra atitinkamo atvejo ir a „numatytasis“ atvejis egzistuoja , kodo blokas, susietas su 'numatytas' byla vykdoma. Jis dažnai naudojamas sprendžiant aplinkybes, kai pateiktai įvestiei netaikoma nė viena iš nurodytų situacijų.
Pavyzdys:
Paimkime programą, kad suprastume, kaip naudoti numatytasis raktinis žodis 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; }
Išvestis
Value is not 1, 2, or 3
Paaiškinimas:
Šiame pavyzdyje jungiklio pareiškimas tiria vertę kintamasis nr (kuris yra 5 ). Kadangi nė vienas atvejis neatitinka skaičiaus, programa atlieka kodo bloką, susietą su „numatytasis“ atvejis . The „pertraukos“ teiginys viduje „numatytasis“ atvejis užtikrina, kad programa išeis iš jungiklio pareiškimas įvykdžius 'numatytas' atvejo blokas.
Tiek 'pertrauka' ir „numatytieji“ raktiniai žodžiai vaidina esminį vaidmenį valdant vykdymo eigą per jungiklio sakinį. The „pertraukos“ teiginys padeda išvengti kritimo elgesio, o „numatytasis“ atvejis suteikia galimybę tvarkyti neprilygstamas bylas.
C „Switch“ teiginys yra nukritęs
C kalba jungiklio teiginys yra fall through; tai reiškia, jei nenaudosite pertraukos sakinio perjungimo didžiojoje raidėje, bus vykdomi visi atvejai po atitikimo.
Pabandykime suprasti perjungimo būseną pagal toliau pateiktą pavyzdį.
#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; }
Išvestis
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
Išvestis
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Įdėto jungiklio korpuso pareiškimas
Switch sakinyje galime naudoti tiek jungiklio sakinių, kiek norime. Tokio tipo teiginiai vadinami įdėtaisiais jungiklio atvejo teiginiais. Apsvarstykite toliau pateiktą pavyzdį.
#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; }
Išvestis
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
Jungiklio teiginio pranašumai:
Yra keletas privalumų jungiklio pareiškimas C. Kai kurie pagrindiniai jungiklio teiginio pranašumai yra šie:
The jungiklio pareiškimas palaiko numatytąjį atvejį, kuris naudojamas kaip a visapusiškas variantas reikšmėms, kurios neatitinka jokių pateiktų atvejų. Tai numatytasis atvejis tvarko neįprastus duomenis ar aplinkybes, kurios nėra aiškiai nurodytos.
Jungiklio teiginio trūkumai:
Yra keletas trūkumų jungiklio pareiškimas C. Kai kurie pagrindiniai jungiklio teiginio trūkumai yra šie: