Tout d'abord, ce n'est absolument juridique: le code de compiler et d'exécuter, en répétant le corps de la boucle imbriquée 10×10=100 fois. Compteur de boucle, i
à l'intérieur de la boucle imbriquée va cacher le compteur de la boucle externe, de sorte que les deux compteurs devrait être incrémenté indépendamment les uns des autres.
Depuis l'extérieur i
est caché, le code à l'intérieur de la boucle imbriquée corps n'auront accès qu'à la valeur de i
de la boucle imbriquée, pas i
de la boucle externe. Dans les situations où la boucle imbriquée n'a pas besoin d'un accès à l'extérieur i
ce code peut être parfaitement justifié. Cependant, cela est susceptible de créer plus de confusion dans ses lecteurs, donc c'est une bonne idée pour éviter d'écrire du code pour éviter les "obligations alimentaires."
Remarque: Même si les variables compteur de deux boucles ont le même identificateur i
, ils restent à deux variables indépendantes, c'est à dire que vous êtes pas en utilisant la même variable dans les deux boucles. En utilisant la même variable dans les deux boucles est également possible, mais le code est difficile à lire. Voici un exemple:
for (int i = 1 ; i < 100 ; i++) {
for ( ; i % 10 != 0 ; i++) {
printf("%02d ", i);
}
printf("%d\n", i);
}
Maintenant, les deux boucles d'utiliser la même variable. Cependant, il faut un certain temps à comprendre ce que ce code n'sans le compiler (démonstration);