La sentència switch en C és una declaració alternativa a la instrucció d'escala if-else-if que ens permet executar diverses operacions per als diferents valors possibles d'una sola variable anomenada variable switch. Aquí, podem definir diverses declaracions en els casos múltiples per als diferents valors d'una sola variable.
La sintaxi de la instrucció switch in c llengua es dóna a continuació:
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; }
Regles per a la declaració switch en llenguatge C
- El canviar l'expressió ha de ser d'un tipus enter o caràcter.
- El valor de cas ha de ser una constant enter o caràcter.
- El valor de cas només es pot utilitzar dins de la instrucció switch.
- El declaració de ruptura en cas de canvi no és necessari. És opcional. Si no es troba cap declaració de ruptura en el cas, tots els casos s'executaran presents després del cas coincident. Es coneix com caure a través l'estat de la declaració de commutació C.
Intentem entendre-ho amb exemples. Suposem que hi ha les següents variables.
int x,y,z; char a,b; float f;
Interruptor vàlid | Switch no vàlid | Cas vàlid | Cas no vàlid |
---|---|---|---|
canviar (x) | interruptor (f) | cas 3; | cas 2.5; |
canviar (x>y) | commuta (x+2,5) | cas 'a'; | cas x; |
interruptor (a+b-2) | cas 1+2; | cas x+2; | |
commuta (func(x,y)) | cas 'x'>'y'; | cas 1,2,3; |
Diagrama de flux de la declaració de commutació en C
Funcionament de la declaració de cas de commutació
En primer lloc, s'avalua l'expressió entera especificada a la instrucció switch. Aquest valor es fa coincidir un per un amb els valors constants donats en els diferents casos. Si es troba una coincidència, s'executen totes les declaracions especificades en aquest cas juntament amb tots els casos presents després d'aquest cas, inclosa la instrucció per defecte. No hi ha dos casos que tinguin valors semblants. Si el cas coincident conté una instrucció break, es saltaran tots els casos presents després d'això i el control surt de l'interruptor. En cas contrari, s'executaran tots els casos següents al cas coincident.
Com funciona la declaració C switch?
Anem a seguir el procés pas a pas de com funciona la instrucció switch a C:
Considereu el següent declaració de commutació :
Programa 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; }
Sortida
Value is 2
Procés pas a pas:
- El canvi variable núm s'avalua. En aquest cas, en una s'inicia amb el valor 2 .
- El valor avaluat num (2). es compara amb les constants especificades a l'etiqueta de cada cas dins del fitxer bloc de commutació .
- El declaració de commutació coincideix amb el valor avaluat (2) amb la constant especificada a segon cas (cas 2) . Com que hi ha una coincidència, el programa salta al bloc de codi associat amb el cas coincident (cas 2) .
- El bloc de codi associat amb cas 2 s'executa, que imprimeix 'El valor és 2' a la consola.
- El 'trencar' La paraula clau està present al bloc de codi de cas 2 . Com a resultat, el programa surt de la instrucció switch immediatament després d'executar el bloc de codi.
- El control del programa continua després de declaració de commutació , i les declaracions posteriors a declaració de commutació s'executen. En aquest cas, no hi ha declaracions després del canvi, de manera que el programa finalitza.
- El declaració de commutació avaluat el valor de la variable núm , va trobar una coincidència amb el cas 2, va executar el bloc de codi corresponent i després va sortir de l' bloc de commutació a causa de la presència de la declaració 'trencar' .
Exemple d'una sentència switch en C
Vegem un exemple senzill d'una declaració de canvi de llenguatge 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; }
Sortida
node de llista java
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Exemple 2 de canvi de cas
#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 '); } }
Sortida
hi
Pausa i paraula clau predeterminada a la declaració Switch
Expliquem i definim el 'trencar' i paraules clau 'predeterminades'. en el context de la instrucció switch, juntament amb el codi d'exemple i la sortida.
1. Trenca paraula clau:
El paraula clau 'trencar' s'utilitza dins del bloc de codi de cada cas per finalitzar prematurament la instrucció switch. Quan el programa troba a declaració 'trencar' dins d'un bloc de caixa, surt immediatament del declaració de commutació , impedint l'execució de blocs de casos posteriors. El declaració 'trencar' és crucial per evitar declaracions de commutació' 'caiguda' comportament.
Exemple:
Prenem un programa per entendre l'ús de la la paraula clau trenca en 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; }
Sortida
Value is 3
Explicació:
En aquest exemple, el declaració de commutació avalua el valor de la variable núm (el qual és 3 ) i el coincideix amb cas 3 . El bloc de codi associat amb cas 3 s'executa, imprimint 'El valor és 3' a la consola. El declaració 'trencar' dins cas 3 assegura que el programa surt de la instrucció switch immediatament després d'executar aquest bloc de casos, evitant l'execució de qualsevol altre cas.
2. Paraula clau predeterminada:
Quan cap dels constants de cas coincideix amb el expressió avaluada , funciona com a cas general . Si no existeix cap cas coincident i a El cas 'predeterminat' existeix , el bloc de codi associat amb el 'per defecte' s'executa el cas. Sovint s'utilitza per gestionar circumstàncies en què cap de les situacions indicades s'aplica a l'entrada proporcionada.
Exemple:
Prenem un programa per entendre l'ús de la paraula clau predeterminada en 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; }
Sortida
Value is not 1, 2, or 3
Explicació:
En aquest exemple, el declaració de commutació examina el valor de la variable núm (el qual és 5 ). Com que cap cas coincideix amb el num, el programa realitza el bloc de codi associat amb el cas 'predeterminat'. . El declaració 'trencar' dins del cas 'predeterminat'. assegura que el programa surt de declaració de commutació després d'executar el 'per defecte' bloc de casos.
Tant el 'trencar' i paraules clau 'predeterminades'. tenen un paper essencial en el control del flux d'execució dins d'una instrucció switch. El declaració 'trencar' ajuda a prevenir el comportament de caiguda, mentre que el cas 'predeterminat'. ofereix una manera de gestionar casos incomparables.
La declaració C Switch és caiguda
En llenguatge C, la declaració switch és fallida; vol dir que si no utilitzeu una instrucció break al cas switch, s'executaran tots els casos posteriors al cas coincident.
Intentem entendre l'estat de caiguda de la declaració de commutació amb l'exemple que es mostra a continuació.
#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; }
Sortida
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
Sortida
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Declaració de cas de commutació niuada
Podem utilitzar tantes declaracions switch com vulguem dins d'una instrucció switch. Aquest tipus d'instruccions s'anomenen declaracions de cas de commutació imbricades. Considereu l'exemple següent.
#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; }
Sortida
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
Avantatges de la declaració switch:
Hi ha diversos avantatges del declaració de commutació a C. Alguns avantatges principals de la instrucció switch són els següents:
El declaració de commutació admet l'ús d'un cas predeterminat que serveix com a opció general per als valors que no coincideixen amb cap cas proporcionat. Això cas predeterminat gestiona entrades o circumstàncies inusuals que no s'indiquen expressament.
Desavantatges de la declaració switch:
Hi ha diversos desavantatges del declaració de commutació a C. Alguns desavantatges principals de la instrucció switch són els següents: