La semaine dernière, j'ai eu une interro en C et on m'a compté une erreur pour " for(x=x ; x<=y ; x++) ", en disant qu'il fallait mettre une autre variable que x pour l'initialisation. J'ai testé comme ça et ça marche, donc y a t-il une raison particulière pour ne pas faire ça ?
Ça dépend de ce qu'était censée faire la boucle. S'il s'agissait de parcourir tous les nombres de x à y, ça peut marcher, mais ça aura modifié la valeur de x. En général, c'est une erreur de modifier la valeur de x. Mais ça dépend du contexte.
Oui mais le problème serait le même avec le for attendu : for (int i = x ; i <= y ; i++). Pour moi, le « vrai » problème de la boucle de ConanGuy, c'est qu'on modifie x.
Ça dépend du contexte. Imaginons un programme qui gère des contrats de location. On veut connaître la somme totale des loyers perçus durant un contrat. Pour ça, on a besoin d'un boucle allant de la première année du contrat à la dernière année, qu'on peut appeler x et y (par exemple). Si on utilise cette même variable x comme indice de boucle, on perd l'information sur la première année du contrat. Après, si c'est fait dans une fonction où x est recopié par valeur, pas de souci, sauf si cette fonction a encore besoin de la date de première année de contrat après la boucle.
Autre exemple : on souhaite extraire une sous-matrice dans une matrice, par exemple on veut aller de la x-ème ligne à la y-ème ligne, et de même avec les colonnes. Si la boucle interne modifie sa valeur initiale, ça n'ira pas car on a encore besoin de cette valeur pour l'itération externe suivante.
À mon avis ce n'est pas pour rien que le C, depuis 1999, permet de déclarer une variable de boucle interne à la boucle.
Mais bon, je dis des banalités.
- Edité par robun 25 septembre 2018 à 10:04:58
for(x=x;...)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent