Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1208 connectés 

  FORUM HardWare.fr
  Programmation
  C

  un petit test avec switch

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

un petit test avec switch

n°2060469
razuki
Posté le 01-03-2011 à 17:22:56  profilanswer
 

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
mood
Publicité
Posté le 01-03-2011 à 17:22:56  profilanswer
 

n°2060476
gilou
Modérateur
Modzilla
Posté le 01-03-2011 à 17:31:58  profilanswer
 

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é!  --
n°2060479
xilebo
noone
Posté le 01-03-2011 à 17:36:01  profilanswer
 

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. }


 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  un petit test avec switch

 

Sujets relatifs
Test de recrutement pour un studio de développement de jeux vidéosPetit problème php Warning: session_start..
Petit problème php Warning: session_start..Petit problème d'affichage sous Firefox
Mise en place d'un test sur le nom d'un fichierPattern Observer/Observable : petit souci
problème de test de collisions et gestion des scoresKcfinder si quelqu'un connait: Petit bug d'affichage...
[Résolu] Javascript qui test checkbox cochée[Java]Petit problème interface graphique
Plus de sujets relatifs à : un petit test avec switch


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR