un petit test avec switch

un petit test avec switch - C - Programmation

Marsh Posté le 01-03-2011 à 17:22:56    

Bonjour.
Est ce que quelqu'un pourrait m'expliquer pourquoi ce code affiche : 3
 

Code :
  1. #include <stdio.h>
  2. int main(){
  3.   int i = 2;
  4.   switch(i){
  5.   case 1:
  6.     printf("1\n" );
  7.     break;
  8.   case 2:
  9.    
  10.   case 3:
  11.     printf("3\n" );
  12.     break;
  13.   default:
  14.     printf("default\n" );
  15.     break;
  16.   }
  17.   return 0;
  18. }


 
Merci d'avance.


Message édité par razuki le 01-03-2011 à 17:24:57
Reply

Marsh Posté le 01-03-2011 à 17:22:56   

Reply

Marsh Posté le 01-03-2011 à 17:31:58    

Parce qu'il y a pas de break après le case 2:
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 01-03-2011 à 17:36:01    

salut,
 
i valant 2 , le "switch" saute au "case 2 :". Cela signifie qu'il exécute le code à partir de cette ligne. Il "exécute" donc la ligne "case 3" qui n'est qu'un 'label' du switch, puis la ligne suivante qui est le printf("3\n" ); puis le break qui effectue un saut jusqu'à la fin du bloc switch, il effectue donc le "return 0".
 
Ton code s'apparente à  
 

Code :
  1. #include <stdio.h>
  2. int main(){
  3. int i = 2;
  4. if ( i == 1 )
  5. {
  6.     printf("1\n" );
  7. }
  8. else if  ( i == 2 || i == 3 )
  9. {
  10. printf("3\n" );
  11. }
  12. else
  13. {
  14. printf("default\n" );
  15. }
  16. return 0;
  17. }


 
je pense que tu souhaitais obtenir le comportement suivant :  
 

Code :
  1. #include <stdio.h>
  2. int main(){
  3. int i = 2;
  4. if ( i == 1 )
  5. {
  6.     printf("1\n" );
  7. }
  8. else if  ( i == 2)
  9. {
  10. // rien
  11. }
  12. else if ( i == 3 )
  13. {
  14. printf("3\n" );
  15. }
  16. else
  17. {
  18. printf("default\n" );
  19. }
  20. return 0;
  21. }


 
 
auquel cas il aurait fallu écrire ça :  
 
 

Code :
  1. #include <stdio.h>
  2. int main(){
  3. int i = 2;
  4. switch(i){
  5. case 1:
  6. printf("1\n" );
  7. break;
  8. case 2:
  9. break;
  10.  
  11. case 3:
  12. printf("3\n" );
  13. break;
  14. default:
  15. printf("default\n" );
  16. break;
  17. }
  18. return 0;
  19. }


 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed