switch : gestion des alternatives multiples
case : marque associée à une alternative prévue
default : marque associée à une alternative non prévue
Mot réservé du langage C
Syntaxe:
switch ( <expression> ) {
case <expression_const 1> : [ <instructions 1> ]
case <expression_const 2> : [ <instructions 2> ]
...
[ default : <instructions n> ]
}
Description:
<expression> est évaluée et fournit une valeur v
Si v est une des valeurs <expression_const 1> ou <expression_const 2> ... alors l'exécution se poursuit par les instructions du case correspondant et ce jusqu'à la prochaine instruction break ou la dernière instruction du bloc <instructions n>.
Si v n'est pas trouvé et que default est présent, alors <instructions n> est exécutée.
<expression_const> doit être une constante de type entier ou caractère, et doit être unique, dans la suite:
<expression_const 1>, <expression_const 2>, ...
Remarques:
- <instructions 1> <instructions 2> ... représentent une ou plusieurs instructions.
- souvent, mais ce n'est pas obligatoire, (voir l'exemple d'utilisation de break) 'break;' est la dernière instruction de <instructions 1> ou <instructions 2>
Voir aussi:
Exemple:
#include
void main( void ) {
double x,y, res; char op; int impos=0;
/* Lecture de l'opération et des deux nombres */
printf("Opération(+ - * /): "); scanf("%c", &op);
printf("Premier opérande: "); scanf("%lf", &x);
printf("Deuxième opérande: "); scanf("%lf", &y);
/*
Suivant le caractère op, une addition, une
soustraction, une multiplication ou une division
est réalisée
*/
switch (op) {
case '*':
res = x * y; break;
case '/':
if(y!=0) res = x / y;
else {
printf("Division par zéro impossible !\n");
impos=1;
}
break;
case '+':
res = x + y;
break;
case '-':
res = x - y;
break;
default:
impos = 1;
printf("Caractère non reconnu !\n");
}
if( ! impos ) printf("Résultat : %lf\n", res);
}