À retenir
- Le symbole utilisé est généralement
--placé devant la variable (ex:--i). - La soustraction de 1 est prioritaire sur le reste de l'instruction.
- Elle se distingue de la post-décrémentation (
i--) qui utilise la valeur actuelle avant de la diminuer.
La pré-décrémentation est une opération mathématique simple en programmation qui consiste à retirer 1 à la valeur d'une variable avant que celle-ci ne soit utilisée dans une instruction. C'est comme si vous enleviez un étage à un ascenseur avant de décider à quel niveau vous vous arrêtez : vous agissez d'abord sur l'outil, puis vous lisez le résultat.
Étymologie
Le terme est composé du préfixe pré- (avant) et de décrémentation (action de diminuer). C'est un calque de l'anglais pre-decrement. Le mot décrémentation trouve sa racine dans le latin decrementum, signifiant diminution ou décroissance.
Exemples d'usage
- En langage C ou JavaScript, si on écrit
resultat = --x;avecxvalant 5,xdevient 4 etresultatreçoit la valeur 4. - Dans une boucle
while (--compteur >= 0), le programme diminue le compteur d'une unité avant de vérifier s'il est toujours supérieur ou égal à zéro.
Cas d'usage
On l'utilise principalement dans les boucles pour gérer des comptes à rebours, lors de la manipulation d'index dans des tableaux, ou pour gérer des piles de données (stacks) où l'on doit reculer d'une position avant d'accéder à l'élément précédent.
Bonnes pratiques
Il est recommandé d'utiliser la pré-décrémentation avec prudence dans des expressions complexes, car mélanger plusieurs opérations de modification sur une même ligne peut rendre le code difficile à lire et provoquer des erreurs subtiles. Si la clarté est prioritaire, il est parfois préférable d'isoler la soustraction sur sa propre ligne.
Synonymes
Antonymes
Conseil
Pour bien comprendre, mémorisez l'ordre de lecture : quand vous voyez -- en premier, l'action de diminuer se fait en premier. C'est un excellent moyen de gagner une ligne de code, mais ne l'utilisez que si cela ne nuit pas à la compréhension de votre programme par d'autres développeurs.
Questions fréquentes
Quelle est la différence avec i-- ?
Avec --i (pré), on retire 1 puis on utilise la valeur. Avec i-- (post), on utilise la valeur actuelle puis on retire 1.
Est-ce que cela fonctionne avec des nombres à virgule ?
Dans la plupart des langages modernes comme JavaScript ou C#, oui, cela retire 1.0 à la valeur flottante.
Est-ce plus rapide que de faire i = i - 1 ?
Historiquement, sur certains processeurs anciens, c'était plus rapide. Aujourd'hui, les compilateurs optimisent les deux de la même manière.