Bei den elementaren Typen wie int
, float
,
unsigned char
usw. ist von C++ eine Typumwandlung zwischen den einzelnen
Typen vordefiniert, so daß man voriges Beispiel ohne Probleme programmieren
kann. Operationen werden in dem Typ durchgeführt, der mehr Informationen
speichern kann. Die Addition einer ganzen Zahl mit einer Fließkommazahl
wird also in Fließkommazahlen durchgeführt. Das Ergebnis wird dann
in den Typ konvertierti, der auf der linken Seite der Zuweisung
(der sogenannte LValue) steht. Diese automatische
Umwandlung nennt man implizites Casting
Es findet keine Typüberprüfung statt. So werden
während der Laufzeit keine Überläufe gemeldet, wie das z.B. in
Pascal üblich ist.
Werden zum Beispiel zwei ganze Zahlen derart subtrahiert, daß
eine negative Zahl herauskommt und ist die Variable, der das Ergebnis
zugewiesen wird, vom Typ unsigned
, so wird die Bitrepräsentation
der negativen Zahl übernommen und es kommt ein sehr hoher Wert heraus.
Hier trägt der Programmierer eigene Verantwortung!