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
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; |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.