#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;
}
Ausgang:Wie printf ein unsigned long long int (der Formatbezeichner für unsigned long long int)?
My number is 8 bytes wide and its value is 285212672l. A normal number is 0.
Ich nehme an, das unerwartete Ergebnis aus ist die unsigned long long int
Druck. Wie geht es dir printf()
ein unsigned long long int
?
Siehe auch http://StackOverflow.com/questions/5140871/sprintf-for-ununsigned-int64 – hippietrail
Ich würde vorschlagen, mit stdint.h und explizite über die Anzahl der Bits in Ihrer Variablen. Wir befinden uns immer noch in einer Übergangszeit zwischen 32- und 64-Bit-Architekturen, und "unsigned long long int" bedeutet für beide nicht dasselbe. –
Ich habe gerade Ihren Code (mit% llu) mit gcc kompiliert und die Ausgabe war die richtige. Übergeben Sie irgendwelche Optionen an den Compiler? – Juan