![]() Vorherige Seite |
![]() Eine Ebene hoch |
![]() Nächste Seite |
---|
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:
1. | long double |
2. | double |
3. | float |
4. | unsigned long |
5. | long* |
6. | unsigned int* |
7. | int |
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
.