Bonjour tout le monde,
après quelques années de pratique du C++, je viens de découvrir un truc qui m'a laissé complétement perplexe...![]()
Voici le code suivant :
J'ai toujours appris que la portée de la variable i est limitée à celle de la boucle for. La preuve le code suivant compile correctement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for(int i=0; i<10; i++) {}
Donc je peux très bien redéclarer i dans une autre boucle vu que sa portée est limitée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for(int i=0; i<10; i++) {} for(double i=0; i<10; i++) {}
Or...
En investigant une classe à la recherche d'une exception je suis tombé sur un code qui ressemble à ceci :
Et ca compile !! Alors là j'ai rien compris. J'ai refait le test dans un projet vierge , et effectivement la variable i garde bien sa dernière valeur après la sortie de la boucle for et est réutilisable...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for(int i=0; i<10; i++) {} //... i = 4;![]()
Conclusion:
Je ne comprends pas le comportement de la variable i. Parce que d'une part le compilateur agit comme si la variable est déclarée en dehors de la boucle, donc on peut y accéder. Mais en même temps je peux la redéclarer autant de fois que je veux dans d'autres boucles, donc sa portée est limitée.
On est bien d'accord que ce code ne compile pas:
alors pourquoi celui ci marche ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int i; double i;
Si une âme charitable a la réponse à ma question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for(int i=0; i<10; i++) {} for(double i=0; i<10; i++) {}
Merci et bonne journée
[EDIT] Je travaille sous Visual Studio 7
Partager