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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?