Forum: Compiler & IDEs Was ist das 'L' in 'F_CPU / (UART_BAUD_RATE * 16L)-1'?


von hans (Gast)


Lesenswert?

Hi,
ich bin blutiger Anfänger.
Kann mir jemand erklären für was in
1
uint16_t baud = F_CPU / (UART_BAUD_RATE * 16L)-1;

das 16L steht? Speziell meine ich dabei das 'L', dass die 16 eine 
Konstanten sein soll ist mir klar.

von Stefan E. (sternst)


Lesenswert?

hans schrieb:
> dass die 16 eine
> Konstanten sein soll ist mir klar.

Eine Konstante mit dem Typ 'int'. Das L erzwingt für die Konstante den 
Typ 'long'. Das wiederum zwingt den Compiler dazu, die Multiplikation 
"UART_BAUD_RATE * 16L" in 'long' durchzuführen. Und warum das Ganze? 
Weil die Multiplikation in 'int' überlaufen könnte.

von hans (Gast)


Lesenswert?

- Gibt's das ganze irgendwie im Tutorial?
- Gibt es auch Varianten für double, int, ... (1d, 1i)???

von Stefan E. (sternst)


Lesenswert?

hans schrieb:
> - Gibt's das ganze irgendwie im Tutorial?

Weiß ich nicht. Aber es gibt "das Ganze" mit Sicherheit in jedem C Buch.

hans schrieb:
> - Gibt es auch Varianten für double, int, ... (1d, 1i)???

Double? Ja.
Int? Wozu sollte das gut sein?

von Jürgen S. (starblue) Benutzerseite


Lesenswert?

hans schrieb:
>
> - Gibt es auch Varianten für double,

Dezimalpunkt oder e-Notation verwenden (1.0, 1e6).

Bei float (32-Bit Fließkomma) ein f nachstellen (1.0f).

> int

int ist der Default ohne spezielle Kennzeichnung.

Es gibt noch U bzw. UL für unsigned und unsigned long,
und evtl. LL bzw. ULL für long long (64 Bit).

Wie groß int und long sind, hängt vom Compiler ab
(int mindestens 16 Bit, long mindestens 32 bit, wenn ich mich recht 
erinnere).

von hans (Gast)


Lesenswert?

Vielen Dank! Jürgen S.!

von Rolf Magnus (Gast)


Lesenswert?

Jürgen S. schrieb:
> Bei float (32-Bit Fließkomma) ein f nachstellen (1.0f).

Oder ein L für long double.

Ob diese Suffixe groß oder klein geschrieben werden, ist übrigens egal.

von DirkB (Gast)


Lesenswert?

Wobei man ein großes L weniger mit einer 1 verwechselt.
1l oder 1L

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

Rolf Magnus schrieb:
> Oder ein L für long double.
in Kombination:
1
FULL
...duck und wech...

von Rolf Magnus (Gast)


Lesenswert?

DirkB schrieb:
> Wobei man ein großes L weniger mit einer 1 verwechselt.
> 1l oder 1L

Wenn man die leicht verwechseln kann, ist das ein Zeichen dafür, daß man 
zum Programmieren den falschen Font gewählt hat. Das gleiche gilt für O 
und 0.

von Jürgen S. (starblue) Benutzerseite


Lesenswert?

Rolf Magnus schrieb:
>
> Ob diese Suffixe groß oder klein geschrieben werden, ist übrigens egal.

Dem Compiler schon, als Mensch bevorzuge ich großes L (wegen 
Verwechslungsgefahr von l und 1), großes U (weil oft zusammen mit L) und 
kleines f (sieht schöner aus an der Stelle).

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.