Hallo. folgendes merkwürdiges Problem: char a; char b; a = 9; b = a * 3; // ergebnis 3 b = a / 3; // ergebnis 9
Und was genau ist dein Problem ? (Glaswürfelmodus -- Abwechslung muss sein ;) ) den ASCII wert gibt's z.B. mit b + '0'; (für genau eine Dezimalstelle) (/(Glaswürfelmodus) Außerdem wird dir ein optimierender Kompiler den Code etwas - nun ja "optimieren" bzw reduzieren. (auch auf die Gefahr hin, Trolle zu füttern) hth. Jörg ps.: Fragen stellt man mit einem '?' ;-)
Oh Entschuldigung, da hab ich wirklich nicht richtig aufgepasst ! Woher hast du die Ergebnisse, die du angegeben hast? (Simulatior/Debugger/Serielle Ausgabe/Display/... ) sry Jörg
b = a * 3; // ergebnis !!3!! b = a / 3; // ergebnis !!9!! Bist du dir Sicher?? Heißt das nicht: b = a * 3; // ergebnis 27 b = a / 3; // ergebnis 3
sorry. hatte mich hier im forum vertippt. also: char a = 9; char b; version 1: b = a*3; // das ergebnis ist korrekterweise 27 version 2: b = 9/3; // das ergebnis ist korrekterweise 3 b = a/3; // das ergebnis der rechnung ist 9, nicht 3!! die ergebnisse habe ich verschiedenfach ausgegeben um das als fehlerquelle auszuschließen. ich habe herausgefunden, dass sobald eine variable (egal ob char oder int; signed oder unsigned) im spiel ist (ob als dividend oder divisor), dann ist das ergebnis zwar reproduzierbar, jedoch völlig unplausibel. gruß edi
Schau doch mal an, was der generierte ASM-Code sagt. Und bitte beantworte die oben gestellten Fragen.
hallo. ein ASM-File wird vom C18-Compiler nicht generiert, nur ein HEX-File. ich habe 2 verschiedene displays für die ausgabe. geben beide das gleiche aus. die optimierungen habe ich schon ausgeschalten, brachte aber auch nichts.
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.