IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Printf avec des __int64


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Points : 116
    Points
    116
    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 éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    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.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Points : 3 352
    Points
    3 352
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    val = 40960
    val = 40960
    val = 0o120000
    val = 0x000000000000a000

  4. #4
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    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 régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Points : 116
    Points
    116
    Par défaut
    Super ! Ca marche au poil. C'est bien %lld.

    Merci à tous !

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    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 régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 137
    Points : 116
    Points
    116
    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.

Discussions similaires

  1. conversion avec printf : cas des octets
    Par d'Oursse dans le forum Windows
    Réponses: 3
    Dernier message: 31/01/2012, 08h27
  2. printf completer avec des espaces
    Par cerede2000 dans le forum C
    Réponses: 3
    Dernier message: 01/05/2008, 12h16
  3. [C] un petit heisenbug avec des printfs
    Par Mouquiette dans le forum Windows
    Réponses: 2
    Dernier message: 17/03/2008, 10h38
  4. printf complété avec des 0
    Par Milowen dans le forum C
    Réponses: 2
    Dernier message: 14/11/2006, 12h35
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo