Comparaison de la visibilité de la variable de la boucle for entre le C et le C++
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 :
Code:
1 2 3 4 5
| ...
for(int boucle = 0; ...; boucle++)
{
}
... |
Vrai ou faux ? (il me semble me rappeler que c'est vrai ==> erreur de syntaxe).
Donc en C, il faut écrire :
Code:
1 2 3 4 5 6 7 8 9
|
{
int boucle;
...
for(boucle = 0; ...; boucle++)
{
}
...
} |
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).
En C++, ce code est valide :
Code:
1 2 3 4 5
| ...
for(int boucle = 0; ...; boucle++)
{
}
... |
Ce qui fait que la portée de la variable boucle s'arrête à l'accolade fermante de la boucle for.
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 ?