matthias schrieb:
> Ich will eine zahl gröesser 2^32 in gnu cc in Hexformat ausgeben.
>
> unsigned long long int val = 4 295 000 000;
> val ist dann wohl unsigned long long int? also bis 64 bit.
Ja, es ist größer als 2^32-1 = 4 294 967 295.
Ob es long long sein muss, hängt von der ABI ab. Auf LP64 genügt long,
auf ILP64 genügt int um einen 64-BIt Wert darzustellen.
> printf ("%o2x",val);
Um einen unsigned long long als hex auszugeben:
1 | #include <stdio.h>
|
2 |
|
3 | int main ()
|
4 | {
|
5 | printf ("%llx", -1ull);
|
6 | }
|
um einen unsigned 64-Bit Wert als hex auszugeben:
1 | #include <stdio.h>
|
2 | #include <inttypes.h>
|
3 |
|
4 | int main ()
|
5 | {
|
6 | printf ("%" PRIx64, UINT64_C (-1));
|
7 | }
|
Beides erfordert mindestens C99.