Forum: Compiler & IDEs XTAL = 12000000L


von Ralf (Gast)


Lesenswert?

Schon oft habe ich in Programmen bei Angaben der Quarzfrequenz ein
großes L gesehen (so wie oben im Betreff). Warum steht es an dieser
Stelle?

von Rufus T. Firefly (Gast)


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?

von Wolfgang Horn (Gast)


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

von Ralf (Gast)


Lesenswert?

Uhhh... ja, danke jetzt ist mir das klar! Ich hatte einfach mal
versuchsweise das L gelöscht... und dann gings nicht mehr!

Danke!

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.