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

Résolu
igor -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    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
    1. igor
       
      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
      1. Marden Messages postés 1075 Statut Membre 210 > 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]).
        0
      2. igor > Marden Messages postés 1075 Statut Membre
         
        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
      3. Marden Messages postés 1075 Statut Membre 210 > 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.
        0
      4. chris > 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)
        0
  2. peppena Messages postés 143 Statut Membre 5
     
    c 'est i++

    ;-)
    2
  3. michelh Messages postés 16 Statut Membre 25
     
    Effectivement, i++ correspond à une post incrémentation alors que ++i correspond à une pré-incrémentation.
    2
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
  6. annoncez
     
    Bonjour

    http://www.world-prog.com

    salut
    1
    1. igor
       
      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
  7. joujou
     
    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
  8. Mahaks
     
    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
    1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
       
      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