Forum: Compiler & IDEs Berechnung durch Präprozessor in c


von Ich schnall es nicht (Gast)


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?

von Ich schnall es nicht (Gast)


Lesenswert?

Es funktioniert doch, offenbar hat der Compiler soweit optimiert, dass 
man nicht einfach beliebig in das Programm reinspringen kann.

von Rolf Magnus (Gast)


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.

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.