nur positive zahlen ausgeben
-
hallo
wie kann man mittels (s)printf nur positive zahlen ausgeben ?
sprintf(buf," %I8d\r\n\0",(fBuf+16i+0)); <- so bekomme ich immer signed werte, also positive und negative. wenn ich %i verwende, dann kommen viel groessere werte als 256 heraus.weiß das wer ?
Meep Meep
-
%u
-
hmm schneller
-
hallo
mit %u gibt er mir dann aber nich mehr nur 8 bit sondern 16 bit zahlen aus
Meep Meep
-
(unsigned)(fBuf+16i+0)
-
int val = -26;
printf("%i", (int) (unsigned char) val);Die erste Typumwandlung nach unsigned char löst Deine Frage, die zweite Typumwandlung zurück nach int stellt sicher, daß sizeof(int) Bytes an die Funktion printf() übergeben werden, so wie diese es wegen des %i erwartet!
Grüße, Krösus
-
Argumente, die an einer der von ... abgedeckten Stellen übergeben werden, werden von niederen Datentypen automatisch "promotet", dh char und short nach int, float nach double. Auf deutsch: Der letzte Cast nach int ist überflüssig.