Forum: Mikrocontroller und Digitale Elektronik Angezeigte Wert stimmt nicht mehr!


von HArdware'Ling (Gast)


Lesenswert?

Hallo,

ich habe ein variable von type unsigned long (d.h. max (2^32-1) kann er 
speichern)
wenn ich die Gleichung ((2^32*4)/100) mit irgeneinem C Compiler 
ausführen lasse, stimmt das Ergebnis!
aber geladen auf meinem 32 bit Mikrocontroller stimmt das Ergebnis nicht 
mehr   ==> WARUM???

MfG

von Karl H. (kbuchegg)


Lesenswert?

Vielleicht deshalb, weil ^ in C ein XOR ist und nicht
die Potenzfunktion?

Ansonsten: Poste deinen richtigen Code.
Wenn er zu lang ist, dann kürze ihn oder mache ein Exzerpt,
welches für sich alleine kompilierbar und lauffähig ist.
Lass es laufen und stell sicher, dass der Fehler immer noch
enthalten ist, und dann poste es.

von HArdware'Ling (Gast)


Lesenswert?

Hallo,

Anders gefragt:
kann es sein das wegen des Diassemblers, der Mikrocontroller erst die 
Gleichung ((2^32*4) ausführt, und dann später durch 100 teilt?

das würde dann alles erklären!

MfG

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Der Disassembler hat damit nichts zu tun.

Die Berechnung (2^32*4) wird zuerst ausgeführt, weil sie in Klammern 
steht.

Beachte den Hinweis von Karl heinz bzgl. dem ^ Operator!

von HArdware'Ling (Gast)


Lesenswert?

Hallo,

aber Moment in meinem Code steht nicht (^) sondern die math_Funktion:
pow(2,32)

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Cool!

von Karl H. (kbuchegg)


Lesenswert?

HArdware'Ling wrote:
> Hallo,
>
> aber Moment in meinem Code steht nicht (^) sondern die math_Funktion:
> pow(2,32)

Und woher sollen wir das wissen?

Poste deinen originalen Code!
Alles andere ist Kaffeesudleserei (um nicht wieder die
berühmte Kristallkugel zu bemühen).

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
Noch kein Account? Hier anmelden.