En C++ on n e devrait utiliser que rarement l'incrémentation des entiers.
Tu peux m'expliquer pourquoi ?
Le parcours d'un tableau est quand même une tache extrêmement courante et bien plus lisible avec des entiers qu'avec un itérateur.
Le boulot du compilateur n'est pas d'optimiser. Le travail du compilateur c'est de traduire du code source en code machine. L'optimisation, c'est du bonus. Compter sur les optimisations du compilateur, c'est s'assurer d'écrire du code qui n'est pas portable pour un sous.
Bien au contraire c'est son boulot et c'est même ça qui permet d'écrire du code portable. C'est le compilo qui s'occupe d'écrire les optimisation qui sont spécifique à l'architecture et qui fait que pour la majorité des cas le programmeur n'a pas en s'en occuper.
Si les compilos n'optimisait tous les soft un peu critiques devrait être écris en assembleur et il n'y aurait pas de langage de haut niveau. Le peu de code qu'il y aurait en C serait illisible et ne tournerait rapidement que sur quelques machines.
Ne pas utiliser un compilateur qui optimise correctement et ne pas tenir compte du fait qu'il optimise est actuellement une stupidité. Tu en tiens toi même surement compte ou alors tu n'utilise que très peu des fonctionalitées du C++.
Le standard C ne garanti pas que l'incrémentation soit effectuée avant ou après l'affectation. C'est un détail d'implémentation laissé au concepteur du compilateur. C'est du code qui n'est pas portable.
Si je reprend mon exemple : dst[pdst++] = src[psrc++];
On en à rien a battre que les incrémentations soient faites avant ou après l'affectation justement, c'est même ça qui permet au processeur de les faire en même temps.
La seule chose à ne pas oublier c'est qu'il ne faut pas utiliser plusieurs fois la même variable sur une ligne si on l'inclémente.
Une des règles de base en programmation, c'est quand même d'éviter de faire plus d'une chose par ligne. Surtout en C.
Des règles de base stupides il y en a des tonnes... Du style de pas faire des fonctions de plus de 10 lignes ou autre truc du même genre.
Et comme partout ce sont des conseils généraux et il faut savoir passer outre quand ça améliore la lisibilité du programme.
[^] # Re: Sécurité ?
Posté par beagf . En réponse à la dépêche Un nouveau serveur httpd : Ashd, A Sane HTTP Daemon. Évalué à 2.
Tu peux m'expliquer pourquoi ?
Le parcours d'un tableau est quand même une tache extrêmement courante et bien plus lisible avec des entiers qu'avec un itérateur.
Le boulot du compilateur n'est pas d'optimiser. Le travail du compilateur c'est de traduire du code source en code machine. L'optimisation, c'est du bonus. Compter sur les optimisations du compilateur, c'est s'assurer d'écrire du code qui n'est pas portable pour un sous.
Bien au contraire c'est son boulot et c'est même ça qui permet d'écrire du code portable. C'est le compilo qui s'occupe d'écrire les optimisation qui sont spécifique à l'architecture et qui fait que pour la majorité des cas le programmeur n'a pas en s'en occuper.
Si les compilos n'optimisait tous les soft un peu critiques devrait être écris en assembleur et il n'y aurait pas de langage de haut niveau. Le peu de code qu'il y aurait en C serait illisible et ne tournerait rapidement que sur quelques machines.
Ne pas utiliser un compilateur qui optimise correctement et ne pas tenir compte du fait qu'il optimise est actuellement une stupidité. Tu en tiens toi même surement compte ou alors tu n'utilise que très peu des fonctionalitées du C++.
Le standard C ne garanti pas que l'incrémentation soit effectuée avant ou après l'affectation. C'est un détail d'implémentation laissé au concepteur du compilateur. C'est du code qui n'est pas portable.
Si je reprend mon exemple :
dst[pdst++] = src[psrc++];On en à rien a battre que les incrémentations soient faites avant ou après l'affectation justement, c'est même ça qui permet au processeur de les faire en même temps.
La seule chose à ne pas oublier c'est qu'il ne faut pas utiliser plusieurs fois la même variable sur une ligne si on l'inclémente.
Une des règles de base en programmation, c'est quand même d'éviter de faire plus d'une chose par ligne. Surtout en C.
Des règles de base stupides il y en a des tonnes... Du style de pas faire des fonctions de plus de 10 lignes ou autre truc du même genre.
Et comme partout ce sont des conseils généraux et il faut savoir passer outre quand ça améliore la lisibilité du programme.