Compteur de boucle en c++: i++ ou ++i
Résolu
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
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
-
Modérateur
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.-
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 -
@igorLes 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]). -
@Mardenmerci!
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. -
@igorSurtout à ... 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.
-
@igorfor (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 -
c 'est i++
;-) -
Effectivement, i++ correspond à une post incrémentation alors que ++i correspond à une pré-incrémentation.
-
ContributeurBonjour,
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 -
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 !!!