Go Down

Topic: [solved] Muss eine byte Variable gecasted werden? (Read 539 times) previous topic - next topic

Helmuth

May 14, 2014, 02:05 pm Last Edit: May 14, 2014, 03:09 pm by Helmuth Reason: 1
Hatte noch nie Probleme damit, es nicht zu tun (da der Wert bei Überlauf offensichtlich durchrotiert), aber ist das "sauber"?

Gruß Helmuth

Serenifly

Nein. Viele Casts sind implizit. Explizit casten muss man meistens nur wenn die Typen nicht auf Anhieb kompatibel sind. Aber byte/int/long sind alles Integer und werden vom Compiler automatisch ineinander gecastet.

Eine Sache auf dem AVR ist vielleicht, dass der Standard-Datentyp int ist. Wenn man maximal schnellen Code benötigt, kann es sich daher anbieten in bestimmten Situationen Literale oder Variablen auf byte zu casten. Das wird hier mal erwähnt:
http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_intpromote
Ist aber in den meisten Standardfällen auch nicht nötig. Ich habe es mal bei einem Bitset gemacht, dass sich wirklich so schnell wie möglich durcharbeiten wollte, da die Operation sehr oft gemacht wurde. Den Assembler Code habe ich mir aber nicht angesehen um das wirklich zu überprüfen.

Helmuth

#2
May 14, 2014, 02:52 pm Last Edit: May 14, 2014, 05:44 pm by Helmuth Reason: 1
Thanx für die Antwort und den Tuningvorschlag!

Go Up