Comment imprimez-vous un long long int non signé (le spécificateur de format pour un long long int non signé)?

#include <stdio.h>
int main() {
    unsigned long long int num = 285212672; //FYI: fits in 29 bits
    int normalInt = 5;
    printf('My number is %d bytes wide and its value is %ul. A normal number is %d.
', sizeof(num), num, normalInt);
    return 0;
}

Sortie :

My number is 8 bytes wide and its value is 285212672l. A normal number is 0.

Je suppose que ce résultat inattendu provient de l'impression du unsigned long long int. Comment faites-vous printf() et unsigned long long int ?

请先 登录 后评论

2 réponses

sparkes

Les choses non standard sont toujours étranges :)

pour la longue longue portion sous GNU c'est L, ll ou q

et sous windows je crois que c'est ll seulement

请先 登录 后评论
Adam Pierce

Sous Linux, c'est %llu et sous Windows, c'est %I64u

Bien que j'aie constaté que cela ne fonctionne pas sous Windows 2000, il semble y avoir un bogue !

请先 登录 后评论