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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 150
    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

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    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 202
    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"

  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 : 52
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    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
    Membre Expert Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    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 confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

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

    Merci à tous !

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    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 confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 150
    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, 07h27
  2. printf completer avec des espaces
    Par cerede2000 dans le forum C
    Réponses: 3
    Dernier message: 01/05/2008, 11h16
  3. [C] un petit heisenbug avec des printfs
    Par Mouquiette dans le forum Windows
    Réponses: 2
    Dernier message: 17/03/2008, 09h38
  4. printf complété avec des 0
    Par Milowen dans le forum C
    Réponses: 2
    Dernier message: 14/11/2006, 11h35
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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