Soit le programme suivant :
#include <stdio.h> #include <stdlib.h> int main(void) { unsigned char i=7; i=i/2; //"/": division entiere... switch(i) { case 1 : (void)printf("Premier\n");break; case 2 : (void)printf("Deuxième\n");break; case 3 : (void)printf("Troisième\n");break; default : (void)printf("Non classe\n"); } return EXIT_SUCCESS; }
Même question pour le programme :
#include <stdio.h> #include <stdlib.h> int main(void) { int i=18; i=i-(--i); switch(i) { case 1 : (void)printf("Premier\n"); case 2 : (void)printf("Deuxième\n"); case 3 : (void)printf("Troisième\n"); default : (void)printf("Non classe\n"); } return EXIT_SUCCESS; }
Solution
- pour le premier programme :
Troisièmes'affiche à l'écran.
- Pour le deuxième programme, c'est
Non classequi s'affiche car :
int i=18; i=i-(--i);
int i=18; i--; // i passe à 17 i=i-(i); // 17-17 donne 0
int i=18; i=i-(i--);
La suppression des break a des conséquences importantes. Par exemple
#include <stdio.h> #include <stdlib.h> int main(void) { int i=2; switch(i) { case 1 : (void)printf("Premier\n"); case 2 : (void)printf("Deuxième\n"); case 3 : (void)printf("Troisième\n"); default : (void)printf("Non classe\n"); } return EXIT_SUCCESS; }
Deuxième Troisième Non classe
Aucun commentaire:
Enregistrer un commentaire