wieviele LONG denn noch :-)

Gast #2651836
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...
#2651844
@  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.
Gast #2651899
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ß
#2651913
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
Gast #2651946
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...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 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.