Différence de déclaration?

Quelle est la différence lorsque nous déclarons une variable avant d’utiliser in loop et lorsque nous définissons une variable in loop.

Je parle de cette situation

int i; for(i=0; i<100; i++); 

et

  for(int i=0; i<100; i++); 

Dans le premier cas, on suppose que la variable i sera utilisée également après la boucle, comme par exemple

 int i; for(i=0; i<100; i++); printf( "i = %d\n", i ); 

Néanmoins, il serait beaucoup mieux d'écrire de la manière suivante

 int i = 0; for( ; i<100; i++); printf( "i = %d\n", i ); 

Dans ce cas, nous obtiendrons un code lisible valide sans avoir besoin de déranger ce qui se fait dans la boucle, comme par exemple

 int i = 0; /* some loop used i */ printf( "i = %d\n", i ); 

Même si la variable ne sera pas changée (assignée) dans la boucle ou dans un autre code à la place de la boucle (généralement chaque code a tendance à être changé), nous obtiendrons néanmoins un résultat valide.

Dans le second cas, on suppose que la variable i sera utilisée uniquement dans la boucle

 for(int i=0; i<100; i++); 

Nous n'avons pas besoin de sa valeur en dehors de la boucle. Donc, dans ce cas, la durée de vie de la variable est limitée par le corps de la boucle. En dehors de la boucle, il sera invisible et non vivant.

Dans le premier cas, vous pouvez accéder à i dehors de la boucle for. Cela peut être avantageux si vous avez une rupture conditionnelle dans votre boucle, par exemple:

 int i = 0; for (i = 0; i < 100; i++) { if (someUnexpectedConditionHappens()) { break; } // do something } printf("The loop has been executed %d times", i); 

C’est le “scope”. Dans le second cas, vous ne pouvez utiliser que la variable dans la boucle for. Dans le premier cas – dans tout le bloc contenant.

Dans le premier cas, i peux être consulté en dehors de la boucle dans le bloc actuel. En C89 , vous ne pouvez pas déclarer de variables dans la boucle, vous devez donc vous en tenir à cette méthode.

Dans le second cas, i ne i pas accessible en dehors de la boucle. La déclaration de variables dans la boucle est une fonction C99 .

Lorsque vous le faites avant la boucle, la variable est également disponible en dehors de la boucle. Alors que lorsque vous le faites à l’intérieur, c’est une variable locale qui ne peut être utilisée qu’à l’intérieur de la boucle.

En outre, vous pouvez déclarer une variable dans une boucle lorsque vous utilisez le standard C99. Mais cela ne fonctionne pas par exemple pour C90. Alors soyez prudent avec ça.

Dans le premier cas, i est accessible en dehors de la boucle for .

Dans le second cas, la scope de i est limitée au corps de la boucle for .

On peut soutenir que le second cas vous donne une meilleure stabilité du programme car l’utilisation de i dehors de la boucle for est souvent involontaire.