Forum: PC-Programmierung 8 bytes variable uint64_t


von Carolin Z. (seobalis)


Lesenswert?

Hallo Leute,

ich will eine 64 bit variable ausgeben. Aber die Ausgabe ist nicht sowie 
ich gedacht habe. Könnt ihr mir erklären wieso es  so ist?
1
#include  "stdio.h"
2
#include  "stdlib.h"
3
#include  "stdint.h"
4
5
int main(){
6
    
7
  uint64_t      test_64_bit;
8
  char        *ptr;
9
  int          i;
10
  ptr = (char*)&test_64_bit;
11
  for(i=0;i<sizeof(uint64_t);i++){
12
    ptr[i] = i;
13
  }
14
  printf("sizeof(test_64_bit): %d\n\n",sizeof(test_64_bit));// ergebnis = 8 
15
  printf("test_64_bit: 0x %02x\n",test_64_bit);
16
  //hier gibt printf aus test_64_bit = 0x 3020100 nicht 0x 706050403020100
17
  // wie ich dachte
18
}

ich bedanke mich schon mal für euere Hilfe.
Grüße,
Carolin

von Karl H. (kbuchegg)


Lesenswert?

%s ist der falschen Format Spezfier für uint64_t.
Da gibt es vordefinierte Konstanten. Ich weiß sie aber leider nicht
auswändig.

von Carolin Z. (seobalis)


Lesenswert?

Karl heinz Buchegger schrieb:
> %s ist der falschen Format Spezfier für uint64_t.
> Da gibt es vordefinierte Konstanten. Ich weiß sie aber leider nicht
> auswändig.

du meinst %x?

Grüße,

Carolin

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

%x ist der Formatspezifierer für unsigned int.

Der für uint64_t ist in /inttypes.h/ als PRIx64 definiert.

Gebrauch:
1
uint64_t i;
2
3
printf("i =%" PRIx64 "\n", i);

von Carolin Z. (seobalis)


Lesenswert?

Rufus t. Firefly schrieb:
> %x ist der Formatspezifierer für unsigned int.
>
> Der für uint64_t ist in /inttypes.h/ als PRIx64 definiert.
>
> Gebrauch:
>
1
> uint64_t i;
2
> 
3
> printf("i =%" PRIx64 "\n", i);
4
>

Ah ok. Danke!

Grüße,
Carolin

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.