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
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
Das typecast wird oft gemacht, um Compilerwarnungen zu vermeiden und manchmal auch zum optimieren. Peter
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
Hehe - Peter Es ist Dein Code, an dem ich gerade rumknacke... Irgendwann versteh ich ihn vielleicht :) Gruss josch
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.