Forum: Mikrocontroller und Digitale Elektronik unsigned long +sprintf


von Greenhorm (Gast)


Lesenswert?

Hallo,

ich einen String
unsigned int nummer=7777;
sprintf(string,"%u",nummer);
den ich über die RS232 Schnittstelle schicke. Der String wird richtig 
angezeigt, wenn ich nur Daten mit unsigned int  Datentyp in den String 
schreibe. Sobald ich aber unisgned long nehme zb.
unsigned long nummer =77777;
sprintf(string,"%l",nummer);
wird der der Wert nicht richtig ausgegeben. Er wird immer der Wert 
(nummer -65536) ausgegeben. Ich habe auch schon %ul, %lu usw. versucht.
Kann mir jemand helfen?
ATmega2560
CodeVision AVR

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

1
unsigned long nummer =77777;

Und Du hast schon im Debugger nachgesehen, ob der Wert überhaupt in der 
Variablen landet?

Eine Zahlenkonstante ist in C zunächst einmal immer vom Typ int - 77777 
passt nicht in einen 16-Bit-Int.

Probiere mal aus, das Suffix UL an die Zahlenkonstante dranzuhängen:

1
unsigned long nummer = 77777UL;


von crazy horse (Gast)


Lesenswert?

Projekt->Configure->C-Compiler->(s)printf/(s)scanf Features

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.