XTAL = 12000000L

Gast #181572
Lesenswert?

Das steht da, weil die Konstante eine "long"-Konstante ist.
Konstanten ohne dieses Suffix werden von C/C++-Compilern als
"int"-Konstante behandelt; bei vielen Architekturen ist "int" aber
nur 16 Bit groß und also unfähig, Werte größer 32767 (Vorzeichen!) zu
behandeln.

Klar?
Gast #181573
Lesenswert?

Hi, Ralf,

aus Kernighan&Ritchie: "Eine ganzzahlige Konstante, der unmittelbar
das Zeichen "l" oder "L" (Buchstabe l) folgt, ist auf jeder
Maschine long. Die Konstante kann dabei dezimal, oktal oder hexadezimal
definiert sein"

Ich hatte mich damit erst beschäftigt, als ich mit einem Makro
Konstanten zur Quarzfrequenz und Baudzahl umrechnen wollte in die
Zahlen, die in UBRRL und UBRRH zu stehen haben.
Wenn Du Präprozessor und Compiler nicht genau sagst, daß er LONG-Zahlen
neben soll, dann wird das Ergebnis anders als gewollt.

Ciao
Wolfgang

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