Berechnung durch Präprozessor in c

Gast #3353719
Lesenswert?

Ich stehe gerade gewaltig auf dem Schlauch.
1
#define F_CPU 8000000UL
2
uint16_t volatile wert;
3

4
wert = 0.21 * F_CPU / 1024;

Erwarten würde ich jetzt, das die Variable wert mit 1640 oder 1641 
geladen wird. Im Simulator wird sie aber mit 4351 geladen. Was mache ich 
falsch?
Gast #3353749
Lesenswert?

Ich schnall es nicht schrieb:
> Berechnung durch Präprozessor in c

In deinem Code wird nichts vom Präprozessor berechnet. Bis auf wenige 
Ausnahmen rechnet der Präprozessor eigentlich nie.

Ich schnall es nicht schrieb:
> Es funktioniert doch, offenbar hat der Compiler soweit optimiert, dass
> man nicht einfach beliebig in das Programm reinspringen kann.

Da die Variable volatile ist, müßte da der richtige Wert drinstehen - 
Optimierung hin oder her. Bei mir wird auch ein Wert von 1640 geladen.

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