Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Précision sur la boucle do...while

    20 avril 2006 à 17:26:27

    Bonjour à tous !

    Si j'ai bien compris, une boucle do...while est toujours exécutée une fois, parce que la condition n'est vérifiée qu'à la fin. Cependant, je viens de découvrir (c'est peut-être pas un scoop, mais bon :lol: ) que la condition est quand même testée en quelque sorte.

    Par exemple, avec ce code, il y a une erreur, parce que le compilateur (d'après ce que je comprends) jette un coup d'oeil sur la condition de fin. Il voit une variable qu'il ne connaît pas, et pour cause, puisqu'elle n'est déclarée que dans la boucle do...while elle-même, alors ça plante :

    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {

        do
        {
            long lNbr = 0
            lNbr = 2;
        }while (lNbr != 2);
     
        system("PAUSE");   
        return 0;
    }


    Si je mets plutôt ça, ça marche :

    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {

        long lNbr = 0
        do
        {
            lNbr = 2;
        }while (lNbr != 2);
       
     
        system("PAUSE");   
        return 0;
    }



    C'est normal qu'il s'occupe de la condition de fin comme ça, dès le début o_O ?
    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2006 à 17:30:59

      Bah je pense qu'il verifie tout de même si les variables utilisée dans la condition soient déclarées avant la boucle ...
      • Partager sur Facebook
      • Partager sur Twitter
        20 avril 2006 à 17:55:40

        Bah, il faut faire la différence entre le moment de la compilation et celui de l'exécution.
        • Partager sur Facebook
        • Partager sur Twitter
          20 avril 2006 à 17:59:13

          euh c'est pas plutot que tu déclares ta variable dans la condition dans l'exemple 1?
          On déclare pas une variable dans une condition!
          Si tu mets long lNbr; juste avant et non dans le while ca devrait etre bon.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            20 avril 2006 à 18:08:45

            Evidemment, sinon, la variable risque d'être déclarée plusieurs fois si on la met dans une boucle, ce qui fait que le compilateur ne compile pas :)
            • Partager sur Facebook
            • Partager sur Twitter

            [C] Précision sur la boucle do...while

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown