Verständnis einer Codezeile

Gast #100400
Lesenswert?
• ▲
▼
Hallo

Ich (C-Newbie) versuche gerade ein Programm nachzuvollziehen und hänge
an einer Stelle.

Da steht:
prescaler = (uchar)DEBOUNCE;

Ist das nun das Gleiche wie:
uchar DEBOUNCE;
prescaler = Debounce;

Oder hat die Klammer noch ne spezielle Bedeutung, die mir bisher
Verborgen geblieben ist.

viele Grüsse
josch
Gast #100401
Lesenswert?
• ▲
▼
Debounce wird wohl weiter vorne als Konstante definiert sein.

(uchar)DEBOUNCE ist ein typecast , d.h. damit sagst Du dem Compiler,
diese Konstante als uchar = 8-Bit-Wert zu betrachten. gcc neigt sonst
dazu, Konstanten als 16-Bit-Zahl zu interpretieren. Das Ganze ist also
eine Code-Optimierung.

>Ist das nun das Gleiche wie:
>uchar DEBOUNCE;
>prescaler = Debounce;

Nicht ganz. Von der Funktionalität schon, aber der Code wird etwas
anders aussehen (Zuweisung einer Variablen statt einer Konstanten).
Wenn es Dich interessiert, dann schau Dir mal den erzeugten
Assembler-Code an.

Stefan
Gast #100403
Lesenswert?
• ▲
▼
Danke Stefan - Superantwort

Das mit der 16-Bit-Verarbeitung von 8-Bit-Werten hab ich neulich
schonmal irgendwo aufgeschnappt und als Expertenwissen abgetan. Ich
ahnte nicht, dass mich das so schnell einholt.
wieder was gelernt :)

viele Grüße
josch

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