Lothar M. schrieb:
> Karl H. schrieb:
>> byte[0] << 8
> Ist das, wenn byte ein char ist, nicht immer 0?
> Oder erweitert das der Compiler diesen char gleich auf den
> Ergebnisdatentyp?
Nicht 'Ergebnisdatentyp'.
Wie die rechte Seite einer Zuweisung ausgewertet wird, hängt prinzipiell
erst mal nicht davon ab, was links steht. Rechts steht eine Expression
und die wird nach den Regeln umgesetzt.
Eine davon ist: Gerechnet wird nie kleiner als int.
(int war schon immer der Leib und Magen Datentyp in C)
Der Datentyp links ist allerdings nicht ganz unerheblich, wenn es zu
Optimierungen kommt. Denn der Compiler kann den rechten Ausdruck auch
wieder von int auf eine 8 Bit Berechnung zurückstutzen, wenn
nachgewiesen werden kann, dass das für das Ergebnis keinen Unterschied
macht. Steht links ein 8 Bit Datentyp, dann geht das natürlich bei
einigen Operationen in der Expression recht einfach zu zeigen.
> Mache ich da den (uint16_t)byte[0]-Cast immer
> unnötigerwese hin?
unnötig würde ich nicht unbedingt sagen.
Aber notwendig um die Auswertung auf 16 Bit zu hieven ist er nicht. Denn
das ist sie sowieso.