BID = 568025
Brizz Stammposter
   
Beiträge: 386 Wohnort: Rheine
|
So wie ich das sehe, liegt es an der Deklaration von "zw".
unsigned char zw;
zw kann Werte von 0 bis 255 annehmen.
Nach dem Befehl zw = 256; steht 0 in zw;
Nach dem Befehl zw = 300; steht 44 in zw;
Je nach Einstellung müsste der Compiler eine entsprechende Warnung ausgeben.
Wenn Du es eilig hast solltest Du den Inhalt von zw einer Variablen vom Typ "unsigned int" zuweisen. Die kann dann Zahlenwerte von 0 bis 65535
fassen. (Vorsicht bei Multiplikationen z.B. 255 * 300 = 76500, d.h. die Variable enthält nach der Multiplikation 10964 siehe oben, statt mit 256 jetzt mit 65536).
Wenn du es nicht so eilig hast, solltest Du den Inhalt von zw auf eine Variable des Typs float zuweisen, Deine Multiplikation mit 1,176 durchführen und das Ergebnis + 0.5 auf eine Variable vom Typ "unsigned int" zuweisen und die Stellen einzeln Ausgeben.
z.B.:
unsigned char zw;
float Produkt;
unsigned int Ergebnis;
Produkt = zw;
Produkt *= 1.17647;
Produkt += 0.5;
Ergebnis = (unsigned int)Produkt;
...
...
usw.
[ Diese Nachricht wurde geändert von: Brizz am 27 Nov 2008 23:06 ]
|