Compteur de boucle en c++: i++ ou ++i

Résolu/Fermé
igor - 9 sept. 2003 à 15:01
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 9 févr. 2010 à 21:00
bj,

concretement quelle est la difference entre ces deux notations de compteur?

Y a t-il un cas ou la boucle debute son iteration a i et l'autre a i+1?

meric

8 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
9 sept. 2003 à 15:51
int i = 1;
printf("%d", i++); 

affichera 1, car i sera incrémenté après avoir donné sa valeur.



int i = 1;
printf("%d", ++i); 

affichera 2, car i sera incrémenté avant d'avoir donné sa valeur.
22
ok pour cet exemple, mais dans le cas d'une boucle...

est-ce qu'elle commence des la verification de la condition, ou bien est-ce qu'elle passe par l'incrementeur.

on m'a raconte les deux versions...

mettons

for i=0, i<nbval, i++

ce cas ira t-il de 0 a nbval -1

et i=0, i<nbval, ++i

et ceului ci de 1 a nbval

meric
0
Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 208 > igor
9 sept. 2003 à 16:21
Les deux solutions donneront le même résultat, puisque l'intruction dite de "pré-incrémentation" ou "post-incrémentaion" sera entièrement exécutée avant l'exécution du test.
La différence entre les deux modes n'est sensible que dans le cas d'une affectation ( x = i++ différent de x = ++i ), ou d'un adressage ( tab[i++] = x différent de tab[++i]).
0
igor > Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006
9 sept. 2003 à 16:25
merci!

on m'a quand meme parle d'une utilisation preferable de i++ au niveau de l'optimisation du calcul

quoi qu'il soit merci a tous et surtout a marden.
0
Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 208 > igor
9 sept. 2003 à 17:02
Surtout à ... tous. Chaque intervenant essaie de répondre en fonction de ses connaissances, et selon ce qu'il croit être la meilleure façon d'aider celui ou celle qui a posé la question.
0
chris > igor
10 sept. 2003 à 14:55
for (i=0;i<nbval;i++)
{
Code;
}
est équivalent à
i = 0
while (i<nbval)
{
Code;
i++;
}

Donc si tu remplaces i++ par ++i, le résultat sera identique, et dans les 2 cas, i ira de 0 à nbval-1 (et pas de 1 à nbval avec ++i)
0
Par habitude j'utilise ++i, plutôt que i++. Pour les types natifs, cela a peu d'importance mais pour les itérateurs cela est préférable.

Plus d'information ici :
https://forums.codeguru.com/showthread.php?231052-C-Operator-Why-should-I-use-i-instead-of-i
5
peppena Messages postés 143 Date d'inscription vendredi 24 janvier 2003 Statut Membre Dernière intervention 3 août 2010 5
9 sept. 2003 à 15:41
c 'est i++

;-)
2
michelh Messages postés 16 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 12 mars 2005 25
10 sept. 2003 à 08:26
Effectivement, i++ correspond à une post incrémentation alors que ++i correspond à une pré-incrémentation.
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
9 févr. 2010 à 21:00
Bonjour,

La pré-incrémentation sur les types non natifs (++variable) est souvent plus optimisée, bien que de moins en moins vraie de par la performance des compilateurs.
i++ renvoie la valeur i
++i renvoie la valeur i+1

Cdlt,
2
Bonjour

http://www.world-prog.com


salut
1
vend 504 peugeot blanche break diesel prix plancher...

j'ai aussi une collection de bédé.

NB: a l'etudiante qui veux travailler sa langue... c'est bien mais y a pas que ca
NB2 (au pauv'type qui s'est pas fait censurer pour referencement abusif): bien tenté!
0
je suit une etudiente en lycée libre à sousse ,niveau 3ème année informatique et vraiment j'ai trais triste par ce que je ne pas perfect à la programation et pour succè l'année prochaine .
Et je ne connais pas plus le français.et j'espoire conseil moi


Et merci pour tout le monde.......
-1
Bonjour,

moi j'ai un petit soucis avec cet function.
for ($i=01;$i<26;$i++)

J'aimerais que ça m'incrémente : 01, 02, 03 au lieu de 1, 2, 3
car j'ai un soucis d'affichage lorsque je trie par numéro.
ça me fait 1, 10, 11, 12, 2, 3, 4, 5, 6, 7, 8, 9 etc...

Quelqu'un aurait une solution pour moi ?

cordialement et merci d'avance !!!
-1
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
9 févr. 2010 à 20:19
bonjour,

votre question est différente de l'objet de ce sujet (déjà résolu par ailleurs), je vous conseille d'en créer un nouveau, et surtout de préciser votre langage car ça n'a pas l'air d'être du C++ .

cdlt
0