#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;
}
Sortie :
My number is 8 bytes wide and its value is 285212672l. A normal number is 0.
Je suppose que ce résultat inattendu est dû à l'impression du unsigned long long int
. Comment faites-vous printf()
un unsigned long long int
?
2 votes
Je viens de compiler votre code (avec %llu) avec gcc et la sortie est correcte. Avez-vous passé des options au compilateur ?
2 votes
Notez que la newlib de Samsung Bada ne semble pas supporter "%lld" : developer.bada.com/forum/
1 votes
Voir aussi stackoverflow.com/questions/5140871/sprintf-for-unsigned-int64
0 votes
Je vous suggère d'utiliser stdint.h et d'être explicite sur le nombre de bits de votre variable. Nous sommes toujours dans une période de transition entre les architectures 32 et 64 bits, et "unsigned long long int" ne signifie pas la même chose sur les deux.