Come si formatta un unsigned long long int usando printf?
#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.\n", sizeof(num), num, normalInt);
return 0;
}
Uscita:
My number is 8 bytes wide and its value is 285212672l. A normal number is 0.
Suppongo che questo risultato inaspettato sia dovuto alla stampa del unsigned long long int
. Come si fa a printf()
un unsigned long long int
?
355
3
Usate il modificatore ll (el-el) long-long con la conversione u (unsigned). (Funziona in Windows, GNU).
Le cose non standard sono sempre strane :)
per la parte lunga lunga sotto GNU è
L
,ll
oq
.e sotto windows credo che sia solo
ll
.Beh, un modo è compilare come x64 con VS2008
Questo funziona come ci si aspetterebbe:
Per il codice a 32 bit, dobbiamo usare il corretto specificatore di formato __int64 %I64u. Quindi diventa.
Questo codice funziona sia per il compilatore VS a 32 che a 64 bit.