Jens schrieb:
> Wird der gesamte speicher vom gecasteten summand_A genommen?
Nein, da dein summand_A kein Zeiger auf Speicher ist, sondern ein
Integer. Mit dem Cast weist du den Compiler an, diesen Integer als
32-Bit-Integer zu behandeln, und nicht als int-Bit-Integer.
Anders ausgedrückt: Der Compiler lädt deinen uint16_t Wert mit dem
Cast in ein 32-Bit-Register (natürlich nur virtuell, wenn die CPU sowas
nicht hat). Es werden also nur 16 Bit geladen und auf 32 Bit aufgebläht.
Eine Folge dessen ist, dass die Addition mit dem Cast natürlich nicht
mehr auf "int" ausgeführt werden kann, sondern als 32-Bit-Addition
ausgeführt werden muss, weil jetzt mindestens ein Summand 32 Bit breit
ist.
Merke: In C hängt die Bitbreite einer Operation nicht vom Ergebnistyp
ab, sondern von den Eingangstypen.
Einen Unterschied macht das aber nur, wenn "int" nicht ohnehin 32 Bit
breit ist.