Ma première tentative de renverser pour la boucle qui fait quelque chose n fois était quelque chose comme:
for ( unsigned int i = n-1; i >= 0; i-- ) {
...
}
Cette échoue parce qu'en arithmétique non signée i
est garanti pour être toujours plus grande ou égale à zéro, donc la condition de la boucle sera toujours vrai. Heureusement, le compilateur gcc m'a mis en garde au sujet d'un "inutile de comparaison" avant que j'ai eu à me demander pourquoi la boucle était en cours d'exécution à l'infini.
Je suis à la recherche d'une manière élégante de résoudre ce problème en gardant à l'esprit que:
- Il devrait être en arrière de la boucle.
- L'indice de boucle doit être signé.
- n est pas constante.
- Il ne devrait pas être fondée sur la 'obscur' anneau de l'arithmétique des entiers non signés.
Des idées? Merci :)