Bernd schrieb:
> C wandelt beide Variablen in die größere der Variablen um und das
> Ergebnis besteht ebenfalls aus diesem Typ.
Mindestens jedoch int. Das nennt sich in C-Sprech "integer promotion".
> Bei einem 8-Bit- und einem 16-Bit-Wert werden der 8-Bit-Wert erst in 16
> Bit umgewandelt und dann gerechnet und ein 16-Bit-Wert ausgegeben.
Nur wenn int 16 Bit breit ist. Wenn der 32 Bit breit ist, werden beide
Seiten erst auf 32 Bit erweitert.
> Ebenso wird bei int und float erst in float umgewandelt, das Ergebnis ist
> dann auch float.
Die genauen Regeln können aber etwas komplizierter sein. Das findet man
unter dem Begriff "usual arithmetic conversions".
> Es würde also oben im Beispiel reichen, eine Variable zu casten.
Es würde auch reichen, gar keine zu casten. Ich würde gerade einem
Anfänger raten, nur dann einen Cast einzusetzen, wenn er auch notwendig
ist und wenn man genau erklären kann, warum er notwendig ist.
> Es würde nicht reichen, die 100 auf 16 Bit zu casten,
100 ist vom Typ int und damit sowieso mindestens 16 Bit breit.
> Es mag sein, das ein Compiler grundsätzlich in int rechnet,
Jeder standardkonforme Compiler tut das.