uint32_t ist nur uint16_t

OP #1190610
Lesenswert?
• ▲
▼
hi leute nach lange rum gucken ist mir folgendes aufgefallen
[c]
uint32_t memtemp;

memtemp=0x1869F;

sprintf(buffer, "%6i", memtemp);
[c]
gibt mir statt 99999 -> 31073 aus.

bei 9999 funzt es noch einwandfrei.. mein gedanke war jetzt kann das 
sein das er nur mit 16 bit arbeiten kann?
#1190616
Lesenswert?
• ▲
▼
Die Option "i" kennzeichnet einen (signed) int, und der geht nunmal nur 
von -32768...32767. Schau mal in die Bibliotheksdoku. Du brauchst 
erstens mal kein "i", sondern ein "u", denn Du möchtest einen 
vozeichenlosen Wert ausgeben. Außerem muss da zusätzlich noch ein 
"l" mit rein, damit es ein unsigned long wird...

EDIT:
Oha, wieder mal viiiel zu lahm...
Gast #1190651
Lesenswert?
• ▲
▼
Karl heinz Buchegger wrote:
> An dieser Stelle
>
>
1
>   memtemp=0x1869F;
2
>
>
> ist das F nicht so prickelnd. Du willst ganz sicher keine Floating Point
> Zahl in ihrer Hex-Repräsentierung angeben.

Ist egal, hier zählt F nicht als Float-Endung, sondern als Ziffer. Aber 
'L' kann man sehr wohl anhängen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren