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

Résolu/Fermé
Signaler
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
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

Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 621
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

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
Messages postés
1072
Date d'inscription
dimanche 11 février 2001
Statut
Membre
Dernière intervention
29 janvier 2006
208 > igor
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]).
>
Messages postés
1072
Date d'inscription
dimanche 11 février 2001
Statut
Membre
Dernière intervention
29 janvier 2006

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.
Messages postés
1072
Date d'inscription
dimanche 11 février 2001
Statut
Membre
Dernière intervention
29 janvier 2006
208 > igor
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.
> igor
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)
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
Messages postés
143
Date d'inscription
vendredi 24 janvier 2003
Statut
Membre
Dernière intervention
3 août 2010
5
c 'est i++

;-)
Messages postés
16
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
12 mars 2005
25
Effectivement, i++ correspond à une post incrémentation alors que ++i correspond à une pré-incrémentation.
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 797
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,
Bonjour

http://www.world-prog.com


salut
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é!
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.......
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 !!!
Messages postés
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
659
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