L'instruction switch en C est une alternative à l'instruction à relais if-else-if qui nous permet d'exécuter plusieurs opérations pour les différentes valeurs possibles d'une seule variable appelée variable switch. Ici, nous pouvons définir diverses instructions dans les cas multiples pour les différentes valeurs d'une seule variable.
La syntaxe de l'instruction switch dans langue c est donné ci-dessous :
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; }
Règles pour l'instruction switch en langage C
- Le changer d'expression doit être de type entier ou caractère.
- Le valeur du cas doit être un entier ou un caractère constant.
- Le valeur du cas ne peut être utilisé que dans l’instruction switch.
- Le instruction de pause dans le cas de l'interrupteur, ce n'est pas indispensable. C'est facultatif. Si aucune instruction break n'est trouvée dans le cas, tous les cas seront exécutés présents après le cas correspondant. Il est connu comme tomber dans l'état de l'instruction switch C.
Essayons de le comprendre par les exemples. Nous supposons qu'il existe les variables suivantes.
int x,y,z; char a,b; float f;
Changement valide | Changement invalide | Cas valide | Cas invalide |
---|---|---|---|
interrupteur(x) | interrupteur(f) | cas 3 ; | cas 2.5 ; |
commutateur (x> y) | commutateur (x+2,5) | cas « a » ; | cas x ; |
interrupteur (a+b-2) | cas 1+2 ; | cas x+2 ; | |
commutateur (fonction (x, y)) | cas 'x'>'y' ; | cas 1,2,3 ; |
Organigramme de l'instruction switch en C
Fonctionnement de l'instruction switch case
Tout d’abord, l’expression entière spécifiée dans l’instruction switch est évaluée. Cette valeur est ensuite mise en correspondance une à une avec les valeurs constantes données dans les différents cas. Si une correspondance est trouvée, alors toutes les instructions spécifiées dans ce cas sont exécutées avec tous les cas présents après ce cas, y compris l'instruction par défaut. Deux cas ne peuvent pas avoir des valeurs similaires. Si le cas correspondant contient une instruction break, alors tous les cas présents après cela seront ignorés et le contrôle sortira du commutateur. Sinon, tous les cas suivant le cas correspondant seront exécutés.
Comment fonctionne l’instruction C switch ?
Passons en revue le processus étape par étape du fonctionnement de l'instruction switch en C :
Considérer ce qui suit instruction de commutation :
Programme 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; }
Sortir
Value is 2
Processus étape par étape :
- Le numéro de variable de commutation est évalué. Dans ce cas, sur une est initialisé avec le valeur 2 .
- Le valeur numérique évaluée (2) est comparé aux constantes spécifiées dans chaque étiquette de cas à l'intérieur du bloc de commutation .
- Le instruction de commutation correspond à valeur évaluée (2) avec la constante spécifiée dans le deuxième cas (cas 2) . Puisqu'il y a une correspondance, le programme passe au bloc de code associé au cas correspondant (cas 2) .
- Le bloc de code associé à cas 2 est exécuté, ce qui imprime 'La valeur est 2' à la console.
- Le 'casser' le mot-clé est présent dans le bloc de code de cas 2 . En conséquence, le programme quitte l'instruction switch immédiatement après l'exécution du bloc de code.
- Le contrôle du programme continue après le instruction de commutation , et toute déclaration suivant le instruction de commutation sont exécutés. Dans ce cas, il n’y a aucune instruction après le changement, le programme se termine donc.
- Le instruction de commutation évalué la valeur du numéro de variable , a trouvé une correspondance avec le cas 2, a exécuté le bloc de code correspondant, puis a quitté le bloc de commutation en raison de la présence du déclaration « pause » .
Exemple d'une instruction switch en C
Voyons un exemple simple d'instruction de changement de langage 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; }
Sortir
remplacer une couleur dans Gimp
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Exemple de cas de commutation 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 '); } }
Sortir
hi
Mot-clé Break et Default dans l'instruction Switch
Expliquons et définissons le 'casser' et mots-clés « par défaut » dans le contexte de l'instruction switch, avec un exemple de code et de sortie.
1. Casser le mot-clé :
Le mot-clé « pause » est utilisé dans le bloc de code de chaque cas pour terminer prématurément l'instruction switch. Lorsque le programme rencontre un déclaration « pause » à l'intérieur d'un bloc de boîtier, il sort immédiatement du instruction de commutation , empêchant l'exécution des blocs de cas suivants. Le déclaration « pause » est crucial pour éviter les instructions switch' 'tomber dans' comportement.
Exemple:
Prenons un programme pour comprendre l'utilisation du casser le mot-clé 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; }
Sortir
Value is 3
Explication:
Dans cet exemple, le instruction de commutation évalue la valeur du numéro de variable (lequel est 3 ) et le fait correspondre avec cas 3 . Le bloc de code associé à cas 3 est exécuté, impression 'La valeur est 3' à la console. Le déclaration « pause » dans cas 3 garantit que le programme quitte l'instruction switch immédiatement après l'exécution de ce bloc de cas, empêchant l'exécution de tout autre cas.
2. Mot-clé par défaut :
Quand aucun des constantes de cas correspond à expression évaluée , il fonctionne comme un cas fourre-tout . S'il n'existe aucun cas correspondant et qu'un Le cas « par défaut » existe , le bloc de code associé au 'défaut' l'affaire est exécutée. Il est souvent utilisé pour gérer des circonstances dans lesquelles aucune des situations indiquées ne s'applique à l'entrée fournie.
Exemple:
Prenons un programme pour comprendre l'utilisation du mot-clé par défaut 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; }
Sortir
Value is not 1, 2, or 3
Explication:
Dans cet exemple, le instruction de commutation examine la valeur du numéro de variable (lequel est 5 ). Comme aucun cas ne correspond au num, le programme exécute le bloc de code associé au cas 'par défaut' . Le déclaration « pause » à l'intérieur de cas 'par défaut' garantit que le programme quitte le instruction de commutation après avoir exécuté le 'défaut' bloc de cas.
Les deux 'casser' et mots-clés « par défaut » jouent un rôle essentiel dans le contrôle du flux d’exécution au sein d’une instruction switch. Le déclaration « pause » aide à prévenir le comportement de chute, tandis que le cas 'par défaut' fournit un moyen de gérer les cas sans précédent.
L'instruction C Switch est un échec
En langage C, l'instruction switch est interrompue ; cela signifie que si vous n'utilisez pas d'instruction break dans le cas switch, tous les cas après le cas correspondant seront exécutés.
Essayons de comprendre l'état de transition de l'instruction switch à l'aide de l'exemple donné ci-dessous.
#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; }
Sortir
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
Sortir
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Instruction de cas de commutation imbriquée
Nous pouvons utiliser autant d’instructions switch que nous le souhaitons dans une instruction switch. Ce type d’instructions est appelé instructions de cas de commutation imbriquées. Considérez l'exemple suivant.
#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; }
Sortir
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
Avantages de l'instruction switch :
Il existe plusieurs avantages du instruction de commutation en C. Certains principaux avantages de l'instruction switch sont les suivants :
Le instruction de commutation prend en charge l'utilisation d'un cas par défaut qui sert de option fourre-tout pour les valeurs qui ne correspondent à aucun des cas fournis. Ce cas par défaut gère les entrées inhabituelles ou les circonstances qui ne sont pas expressément indiquées.
Inconvénients de l'instruction switch :
Il existe plusieurs inconvénients du instruction de commutation en C. Certains principaux inconvénients de l'instruction switch sont les suivants :