Hallo Leute, ich hab ein ganz profanes Problem mit dem SDCC. Ich habe
bis jetzt Assembler und manchmal BASCOM zur Programmierung von 8051er
benutzt und bin was C angeht absoluter newbee. Obwohl ich bereits
vielgesucht und gelesen habe, konnte ich für folgendes Problem keine
Lösung finden. Ich hoffe hier kann mir jemand helfen!
Ich möchte eine Integerzahl (oder auch unsigned char) in einen 3
Stelligen String umwandeln.
Wenn ich folgenden Code kompiliere, macht die Division immer -1
if (zahl<100)
string{0]=48;
else
temp = zahl/100; //temp soll der Ganzzahligen Teil des Ergebnisses sein
zahl = zahl-temp*100; //damit soll der "hunderter anteil" subtrahiert
werden
string[0] = 48+temp;
......
Die 48 ist der Lcd Character Code für "0". Ist die "zahl" z.B. 222
sollte in temp eine zwei stehen und nach der Subtraktion sollte in
"zahl" 22 stehen.
Aber in temp steht nach der Division offensichtlich -1, da in string[0]
anschliessend 47 steht obwohl dort eigentlich 50 stehen sollte.
Was mache ich falsch ? Wo ist der Denkfehler?
Danke für Eure Hilfe
Gruss Uli
Die Datentypen fehlen. Ist "zahl" zufällig 8 Bit gross und mit Vorzeichen?
Bibliotheksfunktion (stdlib.h) verwenden?
1 | |
oder ist das oversized?
Hallo zusammen, die Variablen sind natürlich vorher initialisiert worden: unsigned char zahl=0; unsigned char temp=0; stdlib.h habe ich noch nicht versucht, werde es aber mal probieren !! Gruss Uli
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.