Je ne sais pas bien répondre à cette double question C et C++ :
En C, il est interdit de déclarer une variable lors de la création d'une boucle "for". Ce code va produire une erreur de syntaxe :
Vrai ou faux ? (il me semble me rappeler que c'est vrai ==> erreur de syntaxe).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ... for(int boucle = 0; ...; boucle++) { } ...
Donc en C, il faut écrire :
Ce qui fait que la variable boucle à une portée (ou visibilité) sur le bloc d'accolade complet supérieur (la fonction dans l'exemple).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 { int boucle; ... for(boucle = 0; ...; boucle++) { } ... }
En C++, ce code est valide :
Ce qui fait que la portée de la variable boucle s'arrête à l'accolade fermante de la boucle for.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ... for(int boucle = 0; ...; boucle++) { } ...
Vrai ou faux ? (je suis presque sûr que c'est vrai ==> erreur variable non déclarée après l'accolade).
Il me semble aussi que certains compilateurs permettent de continuer à faire "vivre" la variable après l'accolade fermante.
Est-ce un comportement normal ou bien une extension d'un compilateur en désaccord avec la norme ? Ou bien est ce que la norme est floue et comme rien n'est dit à ce sujet, chaque compilateur fait ce qu'il veut ?
Partager