La pré et post incrémentation en langage C: quelle différence entre i++ et ++i ?





Quelle est la différence entre pré et post incrémentation en langage C ? Faut-il écrire i++ ou ++i ? Quelle différence entre les deux ? C'est à ces questions qu'on va répondre dans ce tuto !

Rappel : incrémentation et affectation


L'incrémentation (respectivement la décrémentation) est le fait d'ajouter (respectivement de soustraire) une certaine valeur à la valeur déjà existante d'une variable. Ainsi, si on fait : x = x+5; on rajoute à la valeur de x la valeur 5. L'incrémentation (respectivement la décrémentation) par 1 peut se faire simplement à l'aide de l'opérateur unaire ++ (respectivement --). Et cet opérateur peut se placer avant (++exp) ou après (exp++) une expression exp. En suivant des cours pour apprendre le langage C, vous pouvez confondre entre ces deux cas de figure qu'on appelle des opérations de post-incrémentation et pré-incrémentation

Avant d'expliquer la différence entre exp++ et ++exp, il faut noter que contrairement aux autres langages de programmation, le langage C considère l'affectation comme une expression, on peut ainsi utiliser des affectations multiples du genre : a = b = c = 5; ou en plus compliqué : x=y/=x;

Remarque: ce qui suit est valable pour l'incrémentation avec l'opérateur ++ et la décrémentation avec l'opérateur --

Quelle différence entre i++ et ++i ?


Comme je l'ai précisé : i++ est appelée opération de post-incrémentation, alors que ++i est appelée opération de pré-incrémentation
Les deux opérations sont différentes et ça peut parfois prêter à confusion surtout lorsqu'on débute en C.
Soit une variable i de type entier initialisée à 2: int i = 2;
Si on écrit les instructions :  i++;  et  ++i; et on affiche la valeur de i, nous aurons la même valeur retournée par les 2 instructions (dans ce cas: i = 2+1 = 3), alors que la position de l'opérateur ++ compte.  
Prenons un autre exemple, pour bien cerner la différence. Soit le programme suivant:


Focalisons nous sur les 2 instructions (5) et (10):
  • (5) j = i++;
  • (10) j = ++i;
En ajoutant le même affichage printf("i = %d ,  j= %d", i, j); après chacune des instructions, on doit obtenir le résultat suivant :  


L'affichage après l'instruction (5) donne : i = 3 , j = 2, L'affichage après l'instruction (10) donne : i = 3 , j = 3
Là on remarque bien une grande différence entre les deux résultats ! Pourquoi ?

Explications :

- Cas de l'instruction (5) : j = i++;

L'opérateur ++ se place après la variable à incrémenter i, ainsi (1) peut être traduite en : incrémenter la valeur de i, mais retourne la valeur originale de i avant incrémentation, donc:
  • i sera incrémenté de 1 (i = 2+1), sa valeur devient 3 
  • j sera affecté à l'ancienne valeur de i (sa valeur avant incrémentation), sa valeur devient 2

- Cas de l'instruction (10) : j = ++i;

L'opérateur ++ se place avant la variable à incrémenter i, ainsi (2) peut être traduite en : incrémenter la valeur de i, et retourne la nouvelle valeur de i après incrémentation, donc:
  • i sera incrémenté de 1 (i = 2+1), sa valeur devient 3 
  • j sera affecté à la nouvelle valeur de i (sa valeur après incrémentation), sa valeur devient 3

Pour résumer :
  • j = i++ ; est équivalente à : j = i ; i = i + 1 ;
  • j = ++i ; est équivalente à : i = i + 1 ; j = i ;
  • j = i--;     est équivalente à : j = i ; i = i - 1 ;
  • j = --i ;  est équivalente à : i = i - 1 ; j = i ;

No Response to "La pré et post incrémentation en langage C: quelle différence entre i++ et ++i ?"

Publier un commentaire

Related Posts Plugin for WordPress, Blogger...
 

Partenaires

ZinfosWeb

Notre site Info Magazine est listé dans la catégorie Informatique : Actualités informatiques de l'annuaire Fiche descriptive de Youtube

VDP-Annuaire annuaire gratuit

Copyright © 2013 Info Magazine All rights reserved.
Converted To Blogger Template by Blogspot Templates Theme By- WooThemes