2010-04-30 5 views

Répondre

10

Le premier déclare la variable dans la portée en dehors de la boucle; Une fois la boucle terminée, la variable existera toujours et sera utilisable. Le second déclare la variable telle qu'elle appartient à la portée de la boucle; après la boucle, la variable cesse d'exister, empêchant la variable d'être utilisée par inadvertance ou par erreur. En C99, C++, Java, et d'autres langages similaires, vous trouverez principalement la deuxième syntaxe car elle est plus sûre - l'index de boucle appartient à la boucle et n'est pas modifié/partagé ailleurs.

Cependant, vous verrez beaucoup de ceux-ci dans le code C plus ancien, car ANSI C n'a pas permis à la variable de boucle d'être déclarée dans la boucle comme ça.

Pour donner un exemple:

int i; 
// ... lots of stuff 
for (i = 0; i < 5; i++){ 
    printf("%d\n",i); // can access i; prints value of i 
} 
printf("%d\n",i); // can access i; prints 5 

Par contre:

for (int i = 0; i < 5; i++){ 
    std::cout << i << std::endl; // can access i; prints value of i 
} 
std::cout << i << std::endl; // compiler error... i not in this scope 
+0

merci Michael la réponse était vraiment instructive. – Nobody

2

Cela dépendra de la langue, que vous n'avez pas spécifié :-)

En C (et quelques autres), la portée (effectivement la durée dans ce cas) de la variable est différente. Dans le premier cas, la variable existe après la boucle car elle est déclarée en dehors de celle-ci. Dans ce dernier, il disparaît lorsque la boucle se termine car son existence est "à l'intérieur" du corps de la boucle.

+0

merci pour la réponse paxdiablo. – Nobody

Questions connexes