Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Débuter
Débuter Forum d'entraide pour débuter en langage C. Avant de poster -> FAQ C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/11/2012, 11h50   #1
ceugniet
Membre du Club
 
Inscription : mars 2004
Messages : 121
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 121
Points : 59
Points : 59
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.
ceugniet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2012, 13h09   #2
leternel
Expert Confirmé
 
Homme Pierre
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 1 207
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 : 1 207
Points : 2 552
Points : 2 552
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.
leternel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2012, 13h55   #3
kwariz
Expert Confirmé
 
Homme Fred Kwariz
Chef de projet en SSII
Inscription : octobre 2011
Messages : 739
Détails du profil
Informations personnelles :
Nom : Homme Fred Kwariz
Âge : 40
Localisation : France, Moselle (Lorraine)

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

Informations forums :
Inscription : octobre 2011
Messages : 739
Points : 2 907
Points : 2 907
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
kwariz est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 19/11/2012, 14h41   #4
fregolo52
Expert Confirmé Sénior
 
Avatar de fregolo52
 
Homme
Développeur C
Inscription : août 2004
Messages : 2 077
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur C

Informations forums :
Inscription : août 2004
Messages : 2 077
Points : 4 024
Points : 4 024
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')
fregolo52 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2012, 16h23   #5
ceugniet
Membre du Club
 
Inscription : mars 2004
Messages : 121
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 121
Points : 59
Points : 59
Super ! Ca marche au poil. C'est bien %lld.

Merci à tous !
ceugniet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 15h09   #6
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 390
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

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

Informations forums :
Inscription : septembre 2005
Messages : 22 390
Points : 32 032
Points : 32 032
Envoyer un message via MSN à Médinoc
^^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.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 19h41   #7
ceugniet
Membre du Club
 
Inscription : mars 2004
Messages : 121
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 121
Points : 59
Points : 59
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.
ceugniet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h25.


 
 
 
 
Partenaires

Hébergement Web