Einfache Division von zwei float / double Werten

#2919583
Lesenswert?

Hallo Gemeinde

Kann mir bitte kurz jemand erklären, warum das hier im AVR Simulator 
nicht klappt..

void Division (void)
{
  volatile double Dezi = 0.0;  //vol nur für Simulator
  volatile double dummy = 0.0;  //vol nur für Simulator


  dummy = atof("53.34565");

  Dezi = 60 / dummy;         //<--- ?!?!?!?!
}

Das die Funktion zweckfrei ist weiß ich.
Warum kann ich die Division nicht ausführen.
Ob es im uC klappt, kann ich noch nicht sagen. Im Simulator (2) geht es 
nicht.

Grüße
Torsten
#2919608
Lesenswert?

Dezi = (float) dummy / 60.1;
hatte ich auch schon.
Gleicher Effekt.

Was passiert ? ....
Der gelbe Pfeil vom Simulator verschwindet, obwohl unten rechts 
"stopped" steht.
Im Disassembler Fenster springt er in einen Bereich, der "File not 
found" heißt.
Hab aber nicht genug Ahnung, um das zu deuten.
(Firma: guloshop.de) #2919624
Lesenswert?

Torsten B. schrieb:
> Im Watch Fenster ist Dezi dann "Not in scope"

Direkt nach "Dezi = dummy / 60.0;" steht eine schließende geschweifte 
Klammer, das heißt, die Prozedur ist an dieser Stelle zu Ende, und die 
lokalen (!) Variablen der Prozedur sind nicht mehr im "Blickfeld".

Deklarier doch Dezi mal als globale Variable (außerhalb der Prozedur).

Unabhängig davon kann es trotzdem sein, dass dein Programm komplett 
"wegoptimiert" wurde, wie Benjamin schon schrieb. Ein Schlauer Compiler 
merkt, dass der Code Unsinn ist, weil die Variablen später nicht mehr 
verwendet werden. Bei "volatile" sollte das aber eigentlich nicht 
passieren...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren