Hallo, sitze gerade an einer AVR Studio GCC Simulation und muss folgende Zeile berechnen: long temp_l = (long)((long)(v_neu-v_alt))*((long)(3906)); Werte: v_neu = 23 v_alt = 0 temp_l = 24302!!!! Was mache ich denn falsch, dass ich hier einen Überlauf erhalte? Wieviele longs muss ich denn noch casten??? Gibts irgendwo eine Anleitung zum Casten (z.B. welche Datentypen führen bei einer Multiplikation / Division zu welchem Ergebnis?) Vielen Dank für Eure Geduld...
@ dost0011 (Gast)
>long temp_l = (long)((long)(v_neu-v_alt))*((long)(3906));
Machs mal eher so.
1 | long temp_l = (v_neu-v_alt)*3906L; |
>Wieviele longs muss ich denn noch casten???
Das WO ist entscheidend. Klasse statt Masse.
max schrieb: > Welches System? dost0011 schrieb: > AVR Studio GCC Wrr AVRs kennt, kennt die Antwort... Oliver
Oliver schrieb: > Wrr AVRs kennt, kennt die Antwort... Die 8-Bit AVRs oder die AVR32 vielleicht? Man könnte ja auch Details nennen um anderen das Herumraten zu ersparen.
Entschuldigung, ich habe keine Details genannt, weil ich nicht wusste, dass es darauf ankommt. Atmel ATTINY85 AVR Studio 4 GCC Ich habe das Gefühl, dass AVR Studio irgendeinen alten Code vorliegen hat und simuliert. Änderungen von mir im Code landen nicht in der Simulation... Gruß
dost0011 schrieb: > Entschuldigung, ich habe keine Details genannt, weil ich nicht wusste, > dass es darauf ankommt. > > Atmel ATTINY85 > AVR Studio 4 > GCC > > Ich habe das Gefühl, dass AVR Studio irgendeinen alten Code vorliegen > hat und simuliert. Änderungen von mir im Code landen nicht in der > Simulation... Dann mach mal einen Rebuild-All oder lösch das komplette debug Verzeichnis
dost0011 schrieb: > Was mache ich denn falsch, dass ich hier einen Überlauf erhalte? Die Rechnung ist zwar ineffizient (Falks ist besser) aber nicht falsch. Kann es sein, dass der Wert falsch ausgegeben wird, also nur als "int"?
Also meine Rechnung funktioniert nun ebenfalls. Ich habe nun AVR Studio von 4.14 auf 4.19 upgedatet und nun funktioniert es auch mit meiner umständlichen Schreibweise. Die Schreibweise ist ja nur entstanden, weil das Ergebnis immer falsch war. Compiliert habe ich jedesmal nur wurde das für die Simulation irgendwie nicht übernommen. Nun nutze ich natürlich auch gleich die neue Schreibweise...
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.