[2699 vues] 2021-12-14 Emmanuel Orchanian
NOTE : cet article a été affiché dans sa langue originale.
Codage (JavaScript et PHP, mais pas en SQL)
Il ne faut jamais oublier que le fameux i++
n'est qu'une abréviation.
Toutes les écritures suivantes sont équivalentes :
on augmente i de 1
i = i + 1
i += 1
i++
c'est la post-incrémentation++i
c'est la pré-incrémentation
- le signe
=
signifie "deviens égal à..." - le signe
+=
signifie "on augmente de..." - le signe
++
signifie "on augmente de 1" ++i
on donne d'abord la valeur de i, puis on l'augmente de 1 (pré-incrémentation)i++
, on augmente d'abord i de 1, puis on donne sa valeur (post-incrémentation)
Comment différencier les deux ?
Puisqu'on lit le code de la gauche vers la droite, on peux considérer que le nombre de la variable, c'est sa valeur même, et le ++
c'est l'opération qui consiste à incrémenter.
i
le i d'abord, le ++ après : on renvoi i,++ puis on augmente
le ++ d'abord, le i après :++ ion augmente , puis on renvoi i
Exemples
/* pré-incrémentation */ i = 10 écrire(i) va écrire 10 écrire(++i) va écrire 11 écrire(i) va écrire 11 /* post-incrémentation */ i = 10 écrire(i) va écrire 10 écrire(i++) va écrire 10 (renvoie d'abord i tel qu'il est, puis après l'augmente) écrire(i) va écrire 11
Mon conseil
Distinguer afficher et modifier
- Si je demande
écrire(i)
, alors j'affiche les choses - Si je demande
incrémenter(i)
, alors je modifie i en lui rajoutant +1, dans ce casi
vaudra 11
Problème
- i++ et ++i font les deux, ils modifient et affichent dans la même instruction
Éviter d'afficher les ++
Je recommande personnellement de ne pas faire les deux en même temps, mais de mettre sur deux lignes différentes la modification de i et son affichage
Transformez
écrire(i++) ;en
écrire(i) ; ++i ;et
écrire(++i) ;en
++i ; écrire(i);
Étymologie
- L'incrémentation, c'est quand on ajoute 1 à un nombre, autrement dit, on fait + 1. Ça vient du latin incrementum où il a une signification d'accroissement (lien Wikipédia).
- Pré signifie "avant", par exemple le "prénom" c'est ce qui vient avant le nom de famille, on dit "Charles Aznavour", et par "Aznavour Charles".
- Post signifie "après", post-traumatique par exemple signifie "après un trauma"
Optimisation du code PHP
En PHP le pré-incrémentation est 10% plus rapide que la post-incrémentation
++i est plus rapide que i++
for ($i=0; $i < 100; ++$i) { // code... }
En général, sur une ligne seule, ne pas utiliser la post-incrémentation :
++$i ;
Note : en JavaScript c'est également possible mais en faisant mes tests personnels la vitesse est équivalente, voir même très légèrement ralentie...
Puis ça reste de l'optimisation légère, on peux s'en passer, à prendre en compte surtout pour les boucles qui auraient des millions d'occurrences. Personnellement je le fais tout le temps ça n'empêche rien.
Décrémentation i--
C'est tout pareil mais en diminuant de 1 quand on écrit --
Personnellement je ne vous le conseille pas, si vous pouvez passer par du ++ et faire une soustraction ou une multiplication avec -1 c'est mieux, car 99% du temps vous n'utiliserez que des ++, et avec la fatigue vous ne verrez pas passer le -- sous votre nez.
Ou alors commentez les -- d'un gros // WARNING
N'oubliez pas non-plus qu'en SQL le signe -- sert à faire les commentaires mono-ligne, donc si vous l'utilisez machinalement, non-seulement vous ne faite pas ce que vous vouliez, mais en plus vous cassez le reste du code ✨🎉🎊
À consulter
Lien vers la documentation PHPJ'ai essayé d'approfondir au maximum ce sujet et j'espère sincèrement que vous l'avez apprécié !
Merci d'avoir lu !
Si en général vous avez une question, une curiosité, n'hésitez pas me contacter.