Se connecter / S'enregistrer
Votre question

Pourquoi ces incrémentations sont pas identique ?

Tags :
  • Programmation
Dernière réponse : dans Programmation
14 Avril 2010 15:47:31

Bonjour :) 

Pourquoi dans ce code les 2 incrémentations ( i++ et j=j+1]) n'ont pas les mêmes résultat n1 = 1 et n2 = 2 ? car je pensé que i++ est le raccourci de i=i+1

  1. int main()
  2. {
  3. int i = 0, j = 0;
  4. int tab[3] = {1, 2, 3};
  5.  
  6. int n1 = tab[i++];
  7. int n2 = tab[j=j+1];
  8.  
  9. printf("%d %d\n", n1, n2);
  10. return 0;
  11. }

Autres pages sur : incrementations identique

14 Avril 2010 15:51:22

Ou est-ce que tu vois sa ? je pourrais te montrer les miens et tu verra si c'est normale ?
m
0
l
14 Avril 2010 16:24:34

hein ?
m
0
l
Contenus similaires
14 Avril 2010 16:25:05

Nonc'est pas grave laisse tomber
m
0
l
a b L Programmation
14 Avril 2010 21:12:55

i++ c'est du post-incrément alors que ++i c'est du pre-incrément.
i++ incrémente i "après" avoir retourné i, alors que ++i incrémente i "avant" de retourner i.

...[i=i+1] est équivalent à ...[++i].


Concrètement:
  1. int i;
  2.  
  3. /* ++i */
  4. int preIncrement()
  5. {
  6. i = i + 1;
  7. return i;
  8. }
  9.  
  10. /* i++ */
  11. int postIncrement()
  12. {
  13. int oldI = i;
  14. i = i + 1;
  15. return oldI;
  16. }


En C, ce n'est pas un problème.
En C++, attention à l'objet temporaire qui est instancié (pour les cas de surcharge de la post-incrémentation).
m
0
l
14 Avril 2010 22:14:44

Merci CRicky!
m
0
l
15 Avril 2010 10:11:46

Mais la ta fonction postincrement le résultat ne sera jamais incémenté !
m
0
l
a c 232 L Programmation
15 Avril 2010 13:19:44

Si... vu que i est un membre de la classe et pas une variable de la fonction
m
0
l
a b L Programmation
15 Avril 2010 20:47:30

Oui, la variable globale (ou membre) est modifiée.
Normalement, j'aurais dû le faire passer en paramètre par référence en C++ (ou par pointeur en C), mais j'ai évité d'ajouter de la complexité. :) 
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS