mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C18 Division funktioniert nicht


Autor: Edi _2k (edi_2k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.

folgendes merkwürdiges Problem:

char a;
char b;

a = 9;
b = a * 3;   // ergebnis 3
b = a / 3;   // ergebnis 9

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 '?' ;-)

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bitte definiere, was du mit "ergebnis 3" meinst.

Autor: Edi _2k (edi_2k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: xyz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau doch mal an, was der generierte ASM-Code sagt.
Und bitte beantworte die oben gestellten Fragen.

Autor: Edi _2k (edi_2k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.