Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Membre du Club
    Inscrit en
    mars 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 121
    Points : 65
    Points
    65

    Par défaut Printf avec des __int64

    Comment imprimer des nombres entiers sur 64 bits ?
    le %d le %64Ld ne marchent pas (mais ne provoquent pas d'erreurs de compilation ni d'exécution).

    J'ai bien vu ça dans un exemple, mais pas moyen de remettre la main dessus. J'ai été contraint de programmer moi-même le décodage, chiffre à chiffre, mais cela c'est très lourd d'appeler une fonction spéciale à chaque fois et cela ne vaut pas une impression automatique ...

    Merci d'avance.

  2. #2
    Expert Confirmé Sénior

    Homme Profil pro Pierre
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    2 228
    Détails du profil
    Informations personnelles :
    Nom : Homme Pierre
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 2 228
    Points : 5 178
    Points
    5 178

    Par défaut

    Complètement au pif, ca ne serait pas un %LLd (pour long long decimal)

    Edit: dans une autre discussion du forum, ca parle de "%llx" pour afficher un int64 en hexa, donc ici, ce serait "%lld"
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • La plus sotte des questions est celle qu'on ne pose pas.

    Pour faire des graphes, essayez yEd.

  3. #3
    Expert Confirmé

    Homme Profil pro Fred Kwariz
    Chef de projet en SSII
    Inscrit en
    octobre 2011
    Messages
    887
    Détails du profil
    Informations personnelles :
    Nom : Homme Fred Kwariz
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : octobre 2011
    Messages : 887
    Points : 3 274
    Points
    3 274

    Par défaut

    Citation Envoyé par ceugniet Voir le message
    Comment imprimer des nombres entiers sur 64 bits ?
    le %d le %64Ld ne marchent pas (mais ne provoquent pas d'erreurs de compilation ni d'exécution).

    J'ai bien vu ça dans un exemple, mais pas moyen de remettre la main dessus. J'ai été contraint de programmer moi-même le décodage, chiffre à chiffre, mais cela c'est très lourd d'appeler une fonction spéciale à chaque fois et cela ne vaut pas une impression automatique ...

    Merci d'avance.
    Bonjour,

    tu peux essayer d'utiliser ce que tu trouves dans inttypes.h qui définit les types int64_t, uint64_t et les spécificateurs de format approprié à ta plateforme PRI{d,u,o,x}64. Par exemple :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdio.h>
    #include <inttypes.h>
     
    int main()                                                                          
    {                                                                                   
      int64_t val=40960;                                                                
     
      printf("val = %"PRId64"\n", val);                                                 
      printf("val = %"PRIi64"\n", val);                                                 
      printf("val = 0o%"PRIo64"\n", val);                                               
      printf("val = 0x%016"PRIx64"\n", val);                                            
     
      return 0;                                                                         
    }
    donne en sortie :
    Code :
    1
    2
    3
    4
    val = 40960
    val = 40960
    val = 0o120000
    val = 0x000000000000a000

  4. #4
    Expert Confirmé Sénior Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    août 2004
    Messages
    2 325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : août 2004
    Messages : 2 325
    Points : 5 040
    Points
    5 040

    Par défaut

    Citation Envoyé par ceugniet Voir le message
    Comment imprimer des nombres entiers sur 64 bits ?
    La réponse est : ça dépend du compilo.
    C'est %lld.
    Sauf si tu es sous Windows avec VS2005 ou antérieur, c'est %I64d (c'est un grand 'i', pas un petit 'l')

  5. #5
    Membre du Club
    Inscrit en
    mars 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 121
    Points : 65
    Points
    65

    Par défaut

    Super ! Ca marche au poil. C'est bien %lld.

    Merci à tous !

  6. #6
    Expert Confirmé Sénior Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    24 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 24 261
    Points : 34 530
    Points
    34 530

    Par défaut

    ^^N'est-ce pas plutôt 2003 ou antérieur? Il me semble que %lld marche sous 2005...
    (par contre, %hh ne marche toujours pas dans scanf(), parce que c'est du C99)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre du Club
    Inscrit en
    mars 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : mars 2004
    Messages : 121
    Points : 65
    Points
    65

    Par défaut

    Merci médinoc, pour cette précision.

    Moi, j'utilise Visual C++ 2010 express depuis un mois et je confirme que %lld marche bien avec printf.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •