Vorherige Seite

Eine Ebene hoch

Nächste Seite

2.6.1 Typumwandlung bei binären Operatoren

Wird ein Operator auf zwei unterschiedliche Datentypen angewandt, stellt sich die Frage, welchen Typ das Ergebnis hat. In C Werden vor Anwendung der Operation die Typen beider Operatoren verglichen und angepasst.

    Beispiel: 12 - 13ul

In diesem Ausdruck ist der linke Operand vom Typ int und der rechte vom Typ unsigned long. Vor Anwendung der Operation (Subtraktion) wird der linke Operand vom Typ int in den Typ unsigned long umgewandelt. Das Ergebnis ist ebenfalls vom Typ unsigned long.

Es gibt dabei eine Rangordnung, bei dem sich der höhere Rang immer durchsetzt:

Die Typen char und short werden mindestens in den Typ int umgewandelt.

* Wenn ein Operand vom Typ unsigned int, und der andere vom Typ long ist, so gibt es zwei Möglichkeiten: Umfasst der positive Teil von long den gesamten Zahlenbereich von unsigned int, so wird der Typ unsigned int in long umgewandelt. Andernfalls (wenn int und long den gleichen Zahlenbereich haben) werden beide zum Typ unsigned long.