Problem mit unsigned long?

Gast #222834
Hallo,
ich programmiere den 68HC12 in C und habe folgendes Problem:
wenn ich alles in einer Zeile rechne, ist das resultat komplet falsch:

t_m = (DELTA_P_ER*REAL_LOOP/DELTA_L2_L1); // ergibt 0xfffffffd

wenn ich es aufteile, ergibt es das richtige resultat:
t_m = DELTA_P_ER;
t_m = t_m *REAL_LOOP;
t_m = t_m / DELTA_L2_L1; // ergibt 184

Definitionen:
unsigned long t_m;
#define DELTA_P_ER      0x3EF8
#define DELTA_L2_L1     0x2219
#define REAL_LOOP       100

Kann mir jemand sagen, wo hier das Problem liegt? Ist es nicht möglich,
das ganze in einer Zeile zu rechnen?
Besten Dank für eure Hilfe!
Gast #222835
Hi,

interessant. beim GCC funktioniert der Codeausschnitt so wie Du ihn
gepostet hast, und es kommt 184 raus.
Ich vermute mal, dass Dein Compiler/Preprozessor für die Konstanten als
Datentyp unsigned short (16 bit) annimmt und damit rechnet. Bei der
Multiplikation gibt es dann einen Überlauf und der Wert stimmt nicht
mehr. Meine Theorie.
Versuch doch mal ein L hinter die Werte zu packen, also z.B.

#define DELTA_P_ER   0x3EF8L

Edd
Gast #222836
Hi Edd,
dein Tip war Gold wert.. ich musste hinter die Konstante ein L einfügen
und schon hat es geklappt!
Ich möchte mich für deine Hilfe herzlich bedanken.
Gruss Chrigu
Gast #222839
Hallo,

habt ihr etwa auch HC12X Erfahrung?
Ich bin auf der Suche nach eine SCI-Anwendung als RS232.
Könnt ihr mir da weiterhelfen?

Danke...

Steini

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.