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 :
- #include <stdio.h>
- int main(){
- int i = 2;
- if ( i == 1 )
- {
- printf("1\n" );
- }
- else if ( i == 2 || i == 3 )
- {
- printf("3\n" );
- }
- else
- {
- printf("default\n" );
- }
- return 0;
- }
|
je pense que tu souhaitais obtenir le comportement suivant :
Code :
- #include <stdio.h>
- int main(){
- int i = 2;
- if ( i == 1 )
- {
- printf("1\n" );
- }
- else if ( i == 2)
- {
- // rien
- }
- else if ( i == 3 )
- {
- printf("3\n" );
- }
- else
- {
- printf("default\n" );
- }
- return 0;
- }
|
auquel cas il aurait fallu écrire ça :
Code :
- #include <stdio.h>
- int main(){
- int i = 2;
- switch(i){
- case 1:
- printf("1\n" );
- break;
- case 2:
- break;
-
- case 3:
- printf("3\n" );
- break;
- default:
- printf("default\n" );
- break;
- }
- return 0;
- }
|