Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] %d et %ld pour récupérer un nombre == aucune différence !! Pkoi ?

    28 avril 2006 à 14:02:13

    Bonjour tt le monde,
    Par simple curiosité je me demande si il y a un différence de faire
    fprintf(fichier, "%d", nombre);

    ou de faire ca :
    fprintf(fichier, "%ld", nombre);

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      28 avril 2006 à 14:04:27

      Tout dépend si nombre est un "int" (%d) ou un "long int" (%ld).

      Edit : ceci dit, ta syntaxe est fausse. Il faut les mettre entre guillemets.
      • Partager sur Facebook
      • Partager sur Twitter
        28 avril 2006 à 14:04:39

        %d et pour un int, %ld pour un long
        • Partager sur Facebook
        • Partager sur Twitter
          28 avril 2006 à 14:12:34

          ok merci j'utilisais tout le temps le "%d" depuis que je programme...
          Merci c'est bon a savoir
          • Partager sur Facebook
          • Partager sur Twitter
            28 avril 2006 à 22:24:09

            ouais je me posais aussi la question.
            mais comment ça se fait alors que le code suivant fonctionne ? (j'utilise %ld pour un int)

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

            int main(void)
            {
              int variable = 0;
             
              scanf("%ld", &variable);
              printf("%ld\n", variable);
             
              getchar();   
              return 0;
            }
            • Partager sur Facebook
            • Partager sur Twitter
              28 avril 2006 à 22:42:26

              Et moi de meme je fais toujours ca et ca fonctionne :
              #include <stdio.h>
              #include <stdlib.h>

              int main(void)
              {
                long variable = 0;
               
                scanf("%d", &variable);
                printf("%d\n", variable);
               
                getchar();   
                return 0;
              }
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                28 avril 2006 à 22:42:30

                Simplement, d indique que le nombre est de type entier int et sera affiché "normalement".

                La lettre l devant le d c'est un modificateur qui peremt d'indiquer la taille de l'argument passé. On a donc %d pour un int et %ld pour un long, pouvant être plus long qu'un int. Mais sur la plupart de nos processeurs 32-bits, les int ont la même taille que les long, du coup si on met %ld en passant un int ou %d en passant un long, on ne voit aucune erreur, tout se passe comme si on avait un seul type.

                Mais attention, cela ne veut pas dire que ça marchera aussi partout si on porte le programme ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  28 avril 2006 à 22:44:00

                  Ok merci, je vais me corigé à l'avenir.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [C] %d et %ld pour récupérer un nombre == aucune différence !! Pkoi ?

                  × 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