logo

C Vyhlásenie o prepnutí

Príkaz switch v C je alternatívou k príkazu if-else-if v rebríčku, ktorý nám umožňuje vykonávať viacero operácií pre rôzne možné hodnoty jednej premennej nazývanej premenná switch. Tu môžeme definovať rôzne príkazy vo viacerých prípadoch pre rôzne hodnoty jednej premennej.

Syntax príkazu switch in c jazyk je uvedené nižšie:

 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; } 

Pravidlá pre príkaz switch v jazyku C

  1. The prepnúť výraz musí byť typu celé číslo alebo znak.
  2. The hodnota prípadu musí byť celočíselná alebo znaková konštanta.
  3. The hodnota prípadu možno použiť iba vo vnútri príkazu switch.
  4. The vyhlásenie o prerušení v puzdre spínača nie je nutnosťou. Je to voliteľné. Ak sa v prípade nenájde príkaz na prerušenie, všetky prípady sa vykonajú po zhodnom prípade. Je známy ako prepadnúť stav príkazu C switch.

Skúsme to pochopiť na príkladoch. Predpokladáme, že existujú nasledujúce premenné.

 int x,y,z; char a,b; float f; 
Platný prepínačNeplatný prepínačPlatný prípadNeplatný prípad
prepínač (x)prepínač (f)prípad 3;prípad 2,5;
prepínač (x>y)prepínač (x+2,5)prípad 'a';prípad x;
prepínač (a+b-2)prípad 1+2;prípad x+2;
switch(funkc(x,y))veľkosť písmen 'x'>'y';prípad 1,2,3;

Vývojový diagram príkazu switch v C

tok príkazu switch v c

Fungovanie príkazu switch case

Najprv sa vyhodnotí celočíselný výraz špecifikovaný v príkaze switch. Táto hodnota sa potom jedna po druhej porovnáva s konštantnými hodnotami uvedenými v rôznych prípadoch. Ak sa nájde zhoda, vykonajú sa všetky príkazy špecifikované v tomto prípade spolu so všetkými prípadmi prítomnými po tomto prípade vrátane predvoleného príkazu. Žiadne dva prípady nemôžu mať podobné hodnoty. Ak zhodný prípad obsahuje príkaz break, potom budú všetky prípady prítomné po ňom preskočené a ovládací prvok vyjde z prepínača. V opačnom prípade sa vykonajú všetky prípady nasledujúce po zhodnom prípade.

Ako funguje príkaz C switch?

Poďme si prejsť procesom krok za krokom, ako funguje príkaz switch v C:

Zvážte nasledujúce príkaz prepnúť :

Program C:

 #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; } 

Výkon

 Value is 2 

Postup krok za krokom:

  1. The prepínacia premenná č sa hodnotí. V tomto prípade, na jeden sa inicializuje pomocou hodnota 2 .
  2. The hodnotená hodnota číslo (2). sa porovná s konštantami špecifikovanými v každom prípade štítku vo vnútri blok spínača .
  3. The príkaz prepnúť zodpovedá vyhodnotená hodnota (2) s konštantou špecifikovanou v druhý prípad (prípad 2) . Keďže existuje zhoda, program preskočí na blok kódu priradený k zodpovedajúci prípad (prípad 2) .
  4. Blok kódu spojený s prípad 2 sa vykoná, ktorá vytlačí 'Hodnota je 2' do konzoly.
  5. The 'prestávka' kľúčové slovo je prítomné v bloku kódu prípad 2 . Výsledkom je, že program vypadne z príkazu switch ihneď po vykonaní bloku kódu.
  6. Riadenie programu pokračuje po príkaz prepnúť a všetky nasledujúce vyhlásenia príkaz prepnúť sú popravené. V tomto prípade po prepnutí nie sú žiadne príkazy, takže program sa ukončí.
  7. The príkaz prepnúť vyhodnotil hodnotu premenná č , našiel zhodu s prípadom 2, spustil zodpovedajúci blok kódu a potom ukončil program blok spínača kvôli prítomnosti vyhlásenie „prestávka“. .

Príklad príkazu switch v C

Pozrime sa na jednoduchý príklad príkazu na prepnutie jazyka C.

 #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; } 

Výkon

reťazec na booleovskú javu
 enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50 

Príklad puzdra spínača 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 '); } } 

Výkon

 hi 

Kľúčové slovo Break a Default v príkaze Switch

Poďme vysvetliť a definovať 'prestávka' a „predvolené“ kľúčové slová v kontexte príkazu switch spolu s ukážkovým kódom a výstupom.

1. Kľúčové slovo prestávky:

The kľúčové slovo „break“. sa používa v rámci bloku kódu každého prípadu na predčasné ukončenie príkazu switch. Keď program narazí na a vyhlásenie „prestávka“. vnútri bloku puzdra okamžite opustí príkaz prepnúť , čím sa zabráni vykonaniu následných blokov prípadov. The vyhlásenie „prestávka“. je rozhodujúce, aby ste sa vyhli príkazom switch' 'prepadnúť' správanie.

Príklad:

Zoberme si program, aby sme pochopili použitie kľúčové slovo zlomiť v 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; } 

Výkon

 Value is 3 

Vysvetlenie:

V tomto príklade príkaz prepnúť hodnotí hodnotu premenná č (ktorý je 3 ) a zhoduje sa s ním prípad 3 . Blok kódu spojený s prípad 3 je vykonaná, tlač 'Hodnota je 3' do konzoly. The vyhlásenie „prestávka“. v rámci prípad 3 zabezpečuje, že program ukončí príkaz switch ihneď po vykonaní tohto bloku prípadu, čím zabráni vykonaniu akýchkoľvek iných prípadov.

2. Predvolené kľúčové slovo:

Keď žiadny z prípadové konštanty zhodovať sa s hodnotený výraz , pôsobí ako a univerzálny prípad . Ak neexistuje žiadny zodpovedajúci prípad a a existuje „predvolený“ prípad , blok kódu spojený s 'default' prípad je spustený. Často sa používa na zvládnutie okolností, keď žiadna z uvedených situácií neplatí pre poskytnutý vstup.

Príklad:

Zoberme si program, aby sme pochopili použitie predvolené kľúčové slovo v 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; } 

Výkon

 Value is not 1, 2, or 3 

Vysvetlenie:

V tomto príklade príkaz prepnúť skúma hodnotu premenná č (ktorý je 5 ). Pretože žiadne písmeno sa nezhoduje s číslom, program vykoná blok kódu spojený s „predvolený“ prípad . The vyhlásenie „prestávka“. vnútri „predvolený“ prípad zaisťuje ukončenie programu príkaz prepnúť po vykonaní 'default' puzdrový blok.

Obaja 'prestávka' a „predvolené“ kľúčové slová hrajú zásadnú úlohu pri riadení toku vykonávania v rámci príkazu switch. The vyhlásenie „prestávka“. pomáha predchádzať prepadovému správaniu, zatiaľ čo „predvolený“ prípad poskytuje spôsob, ako riešiť neporovnateľné prípady.

C Príkaz Switch je prechodný

V jazyku C je príkaz switch prepadnutý; to znamená, že ak nepoužijete príkaz break v prípade prepínača, vykonajú sa všetky prípady po zhode.

Pokúsme sa pochopiť pád cez stav príkazu switch na príklade uvedenom nižšie.

 #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; } 

Výkon

 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 

Výkon

 enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100 

Vnorené vyhlásenie o prípade prepínača

V príkaze switch môžeme použiť toľko príkazov, koľko chceme. Takýto typ príkazov sa nazýva vnorené príkazy typu switch case. Zvážte nasledujúci príklad.

 #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; } 

Výkon

 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 

Výhody príkazu switch:

Existuje niekoľko výhod príkaz prepnúť v C. Niektoré hlavné výhody príkazu switch sú nasledovné:

    Čitateľnosť a prehľadnosť:The príkaz prepnúť poskytuje stručný a priamy spôsob vyjadrenia viaccestné vetvenie v kóde. Zaobchádzanie s viacerými prípadmi môže spôsobiť, že kód bude organizovanejší a ľahšie čitateľný ako viacero prípadov vnorené príkazy if-else .Účinnosť:The príkaz prepnúť je vo všeobecnosti efektívnejšia ako séria if-others vyhlásenia pri riešení viacerých podmienok. Funguje ako d stôl s priamym skokom , vďaka čomu je rýchlejší a optimalizovaný z hľadiska času vykonávania.Logika založená na prípadoch:The príkaz prepnúť prirodzene zapadá do scenárov, kde sa program potrebuje rozhodovať na základe konkrétnych hodnôt jednej premennej. Je to intuitívny a priamy spôsob implementácie logiky založenej na prípadoch.

The príkaz prepnúť podporuje použitie predvoleného prípadu, ktorý slúži ako a univerzálna možnosť pre hodnoty, ktoré sa nezhodujú so žiadnym zadaným prípadom. Toto predvolený prípad spracováva neobvyklé vstupy alebo okolnosti, ktoré nie sú výslovne uvedené.

Nevýhody príkazu switch:

Existuje niekoľko nevýhod príkaz prepnúť v C. Niektoré hlavné nevýhody príkazu switch sú nasledovné:

    Obmedzené výrazy:Výraz použitý v príkaz prepnúť musí mať za následok an integrálna hodnota (char, int, enum) alebo kompatibilný dátový typ. Viac nezvládne zložité alebo nekonštantné výrazy , obmedzujúce jeho flexibilita v niektorých scenároch.Neschopnosť porovnať rozsahy:Na rozdiel od if-others vyhlásenia , príkaz prepnúť nemôže priamo spracovať rozsahy hodnôt. Každý prípad v príkaze switch predstavuje špecifickú konštantnú hodnotu, čo sťažuje efektívne zaobchádzanie s rozsahom hodnôt.Žiadna podpora pre čísla s pohyblivou rádovou čiarkou:The príkaz prepnúť iba akceptuje integrálne typy (celé čísla) a hodnoty z enumy ; neakceptuje čísla s pohyblivou rádovou čiarkou. Nezvláda to neintegrálne dátové typy Páči sa mi to celé čísla s pohyblivou rádovou čiarkou , čo môže byť za určitých okolností problematické.Prepadové správanie: Prepnúť výpisy mať 'prepadnúť' štandardné správanie, čo znamená, že ak prípad nezahŕňa a vyhlásenie „prestávka“. , exekučný závet 'prepadnúť' do nasledujúceho bloku prípadov. Ak sa neriadi správne, môže to viesť k nežiaducemu správaniu.Duplicitný kód:Pomocou a príkaz prepnúť môže za určitých okolností viesť k duplicitnému kódu, najmä ak mnohé prípady vyžadujú rovnaké akcie. Ak nie je spravované správne, môže to viesť k duplicite kódu.Vnorené prepínače môžu byť zložité:Pri rokovaní s vnorené zmeniť príkazy , kód sa môže stať zložitým a menej čitateľným. Pochopenie a udržiavanie takýchto vnorených štruktúr môže vyžadovať dodatočné úsilie.