Printf int64 [Résolu]

Messages postés
1108
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
- - Dernière réponse : cptpingu
Messages postés
3821
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 août 2019
- 4 juin 2012 à 17:28
Bonjour,

Il y a quelque temps (Visual Studio 2003/GCC) j'ai participé au développement d'une appli multi-plateforme en 64bit.

Pour moi, il y avait 2 codes différents :
#ifdef WIN32
  sprintf(buffer ,"I64d", nom_int64);
#else
  sprintf(buffer ,"lld", nom_int64);
#endif

Je viens de faire un test sous Visual Studio 2008, il semblerait que la syntaxe Linux fonctionne.

Vous confirmez que cette écriture s'est "standardisée" depuis Visual 2003 ? Je n'ai rien trouvé sur Internet qui confirme cette observation.

Merci
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
3821
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 août 2019
85
3
Merci
Bonjour.

D'après ce que j'ai vu:
- http://stackoverflow.com/questions/10631600/unsigned-long-long-vs-unsigned-longportability-point-of-view
- http://stackoverflow.com/questions/2844/how-do-you-printf-an-unsigned-long-long-int

Notemment un point particulier, très intéressant:
This isn't a Linux/UNIX thing, the "ll" length modifier was added to Standard C in C99, if it doesn't work in "Microsoft C" then it is because they are not standards compliant.


Donc tu peux utiliser "ll" tant que le compilateur que tu utilises, supporte la norme C99.

Ici (http://forum.osdev.org/viewtopic.php?f=13&t=18373), il semble confirmer ceci, et apporter une précision très utile. Des macros pour gérer la portabilité sont disponibles dans :
For portable printf() formatting strings, C99 offers . It has printf() and scanf() macros for each of the types defined in <stdint.h>. So, for example, you can print a int64_t with:
printf( "%" PRId64 "\n", x );
Of course, this works only if your implementation (i.e., compiler / library) does support 64-bit values. Which is, after all, kind of a precondition


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cptpingu