Hallo,
programmiere schon länger die atmegas von Atmel. Benutze derzeit das
AVR-Studio 6 mit dem beiligendem gcc und mir hat sich neulich eine Frage
aufgetan.
Wenn ich folgende IF-Abfrage gestalte:
1 | if(V1 >= (5*1000*100))
|
2 | {}
|
V1 ist eine unsigned long Variable und definitiv größer als 500000.
Trotzdem springt er nicht in den Codeblock rein. Warum nicht?
Ähnliches Problem:
Übertragsbildung. Da kommen ganz komische Werte raus, aber nicht die
Differenz. Es liegt an dem Ausdruck in der Klammer. Wenn ich statt
(5*1000*100) 500000 schreibe funktioniert alles tadelos.
Wodran liegt das? Nimmt der Compiler die Zahlen nicht als unsigned long
auf und entstehen dadruch die Fehler ?
Grüße