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

8 réponses

  1. 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.
    22
    1. 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
    2. @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]).
      0
    3. @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.
      0
    4. @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.
      0
    5. @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)
      0
  2. Effectivement, i++ correspond à une post incrémentation alors que ++i correspond à une pré-incrémentation.
    2
    1. Contributeur
      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
      1. Bonjour

        http://www.world-prog.com

        salut
        1
        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
      2. 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
        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
          1. 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