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

  FORUM HardWare.fr
  Programmation
  C++

  portée indices de boucle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

portée indices de boucle

n°1412723
Zipo
Ours bipolaire
Posté le 24-07-2006 à 23:53:54  profilanswer
 

Salut tout le monde, je me pose une petite question, il se trouve que lorsque je fais un truc du genre :
 

Code :
  1. for(int i=0; i<10; i++){
  2. blabla...
  3. }
  4. for(int i=0; i<5; i++){
  5. blibli...
  6. }


 
VisualC++ me dit qu'il y a une erreur, comme quoi i est déclaré 2 fois, donc il veut que j'enlève le "int" de la 2ème boucle quoi.
 
Ok je l'enlève, ça compile, s'exécute niquel, maintenant je teste mon code sous devC++, et lui me met une erreur lorsqu'il n'y a pas le "int" de la 2ème boucle...
 
Hors je pense que DevC++ a raison, puisque selon la norme la portée de l'indice de boucle n'est plus valable hors de la boucle quand on le déclare comme ça non ?
 
Alors qui faut-il croire ? VisualC++ raconterait-il des conneries ?
 
Parceque du coup je vais changer mon code comme ça mais bon, ça fait très "C" :d :

Code :
  1. int i;
  2. for(i=0; i<10; i++){
  3. blabla...
  4. }
  5. for(i=0; i<5; i++){
  6. blibli...
  7. }


Message édité par Zipo le 24-07-2006 à 23:54:25
mood
Publicité
Posté le 24-07-2006 à 23:53:54  profilanswer
 

n°1412725
Taz
bisounours-codeur
Posté le 24-07-2006 à 23:57:04  profilanswer
 

ta version de VC++ ne respecte pas la norme. Mets à jour. Remarque, j'y connais rien, il y a peut-être un pragma pour régler ça.

n°1412732
Zipo
Ours bipolaire
Posté le 25-07-2006 à 00:21:47  profilanswer
 

ok c'est bien ce que je pensais, merci pour ta réponse rapide :jap:

n°1412804
_darkalt3_
Proctopathe
Posté le 25-07-2006 à 09:42:25  profilanswer
 

A ce propos, il faut noter que le code suivant compile sous visual 2003 (un ";" peut etre très pénible à trouver ...), je tire ça du code d'un collègue qui ne comprenait rien àu comportement de son programme, et le debugger n'a pas pu l'aider à trouver la faute:

Code :
  1. #include "stdafx.h"
  2. int _tmain(int argc, _TCHAR* argv[])
  3. {
  4. for (int i = 0 ; i<10 ; i++);
  5.  std::cout <<i;
  6. }


 
La sortie de ce code est :

Citation :

10


 
Ca nous a pas trop paru normal que cela compile, et on a pas cherché plus loin ...

n°1412973
Fullblaste​r
Posté le 25-07-2006 à 12:47:20  profilanswer
 

Sous VC7.1 et + (peut-etre sous le 7.0) mettre l'option "Conformité pour la portée d'une boucle For" qui rajoute l'option /ZC:forScope à la compilation.

 

Edit : option présente dans les propriétés de ton projet sous la rubrique C/C++


Message édité par Fullblaster le 25-07-2006 à 12:49:21
n°1412994
_darkalt3_
Proctopathe
Posté le 25-07-2006 à 13:34:31  profilanswer
 

rhâ super, merci beaucoup :jap:

n°1413006
GrosBocdel
Posté le 25-07-2006 à 13:47:10  profilanswer
 

_darkalt3_ a écrit :

A ce propos, il faut noter que le code suivant compile sous visual 2003 (un ";" peut etre très pénible à trouver ...), je tire ça du code d'un collègue qui ne comprenait rien àu comportement de son programme, et le debugger n'a pas pu l'aider à trouver la faute:

Code :
  1. #include "stdafx.h"
  2. int _tmain(int argc, _TCHAR* argv[])
  3. {
  4. for (int i = 0 ; i<10 ; i++);
  5.  std::cout <<i;
  6. }


 
La sortie de ce code est :

Citation :

10


 
Ca nous a pas trop paru normal que cela compile, et on a pas cherché plus loin ...


 
Pourquoi tu voudrais que ça ne compile pas?

n°1413007
_darkalt3_
Proctopathe
Posté le 25-07-2006 à 13:48:24  profilanswer
 

parce que la portée de 'i' est censée être dans la boucle for. Or, j'y fais appel en dehors.

n°1413012
GrosBocdel
Posté le 25-07-2006 à 13:49:41  profilanswer
 

_darkalt3_ a écrit :

parce que la portée de 'i' est censée être dans la boucle for. Or, j'y fais appel en dehors.


Ha oui ok, effectivement. M'en suis rendu compte après avoir posté  :)

n°1413019
_darkalt3_
Proctopathe
Posté le 25-07-2006 à 13:53:28  profilanswer
 

Vraiment très pas évident , ces ';' en fin de 'for' :D


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

  portée indices de boucle

 

Sujets relatifs
problème de boucle/session : envoi de doublons en nombre variable ?!Boucle for
faire une boucle dépendant d'une procédure évenementielle[JS] Comment récupérer tous les indices/membres d'un tablea/objet
[C] Boucle avec strcat pour créer plusieurs fichiersprobleme affichage boucle
problème de variable en boucle arrivant d'un formulaireprobleme de double boucle et variables... [résolu]
[batch]inventaire réseau-problème de boucle "for"TStringGrid, Boucle... String ? O.o
Plus de sujets relatifs à : portée indices de boucle


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