Expliquer sur la nature de la sortie du code?

Code:

#include int main(void) { int i, j; for(j = i+1, i=1; i<=5; j++, i++) printf("%d %d\n", i, j); return 0; } 

Sortie:

 1 66 2 67 3 68 4 69 5 70 

Quelqu’un peut-il expliquer la nature de la sortie du code?

Dans votre code i , j ne sont pas initialisés au moment de la déclaration.
Dans la boucle for, vous affectez j = i + 1 donc j rest une valeur résiduelle alors que i affecté 1 ,

dans la boucle, vous incrémentez les valeurs i , j et printf. j’incrémente de 1 à 5 et j d’une valeur de déchet initiale (c’est-à-dire 66 dans votre sortie) à initial garbage + 5 .

Éditer Sur la base de commentaires:

Si vous n’atsortingbuez pas de valeur initiale lors de la déclaration, la variable pointera sur une adresse pouvant contenir des données précédemment utilisées provenant d’une autre application (ou de toute dernière utilisée).

Avant d’allouer de la mémoire dans le système d’exécution, le système ne l’efface pas avant de l’allouer ( juste pour que les performances du système restnt élevées ) , la valeur par défaut de la variable est donc garbage.

i est unitialisé lorsque vous définissez j = i + 1. Donc j (au début) pourrait être presque n’importe quoi.

j se voit atsortingbuer la valeur de i avant même que i ne soit affecté = 1. Donc, i peut être n’importe quelle valeur arbitraire qui lui est fournie par le système d’exploitation. Dans le cas ci-dessus, la valeur atsortingbuée à i par le système d’exploitation était 66. Cette valeur arbitraire pouvait être différente sur différents systèmes.