Unsigned __int64 et PRINTF [Résolu]

Signaler
Messages postés
110
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
20 décembre 2005
-
Messages postés
110
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
20 décembre 2005
-
Ce message n'attend pas de réponse. Il est là à titre indicatif. Il aidera les gens qui tomberont dessus via un moteur de recherche.

En effet, j'ai un peu galéré pour trouver comment utiliser le plus grand entier possible, l'entier sur 64bits. Voilà un code source très simple pour l'afficher avec printf. Notez l'utilisation de %I64u, et non de %llu ou %LLu comme je l'ai souvent vu. Ca fonctionne en tout cas sous DevCpp.

#include <stdio.h>

int main(int argc, char *argv[])
{
    unsigned __int64 nb = 0xFFFFFFFFFFFFFFFF;
    printf ( "Base 10 : %020I64u\n", nb );
    // soit 18 446 744 073 709 551 615
    printf ( "Base 16 : %016I64X\n", nb );    
    return 0;
}

5 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
J'ai trouvé: printf ( "Base 10 : %I64d\n", nb );
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Et pour un __int64 signé tu sais comment faire?
Messages postés
231
Date d'inscription
mercredi 12 février 2003
Statut
Membre
Dernière intervention
7 juillet 2009

Il y a une semaine ça m'aurait été utile, ça m'aurait evité de chercher sur MSDN, mais bon je suis arrivé à la même conclusion que toi (%I64u) sans trop de diffuculté.
Messages postés
241
Date d'inscription
mardi 29 octobre 2002
Statut
Membre
Dernière intervention
23 janvier 2006

Pour le "%llu" ca doit etre la bonne syntaxe sous GCC, parce que pour GCC un nombre 64 bits (sur une machine 32 bits) c est un "long long"
Messages postés
110
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
20 décembre 2005

Si je ne m'abuse, DevCpp 4.9.9.0 utilise la version GCC 3.3.1. Je croyais aussi que c'était un unsigned long long int, mais ca n'a rien donné.