Was implizites Umwandeln leistet

C++ stellt somit für alle elementaren Typen (außer Pointertypen) eine automatische Typumwandlung zur Verfügung. In welchen Typ intern bei Zwischenergebnissen umgewandelt wird, ist zwar genau definiert, aber nicht so wesentlich für das Verständnis. Zumindest müssen wir uns keine Sorgen machen, daß eine Operation auf den Standardtypen nicht erlaubt wäre.

Einige Compiler geben Warnungen aus, wenn z.B. eine Fließkommazahl implizit in eine ganze Zahl umgewandelt wird, da es hier i. allg. zu Informationsverlusten kommt. Diese Warnung ist wirklich nur als Warnung zu verstehen, damit der Programmierer weiß, daß es zu einem Problem kommen kann. Wenn er mit diesem Verlust einverstanden ist, kann er die Warnung ignorieren. Es kann aber auch sinnvoll sein, eine explizite Typumwandlung zu machen, um Laufzeitgewinne zu erreichen. Dazu unten mehr.

  double x = 3.14159;
  int a = 3;

  a += x;  // Hier gibt der Compiler eine Warnung aus:
           // Moeglicherweise geht unbeabsichtigt Information verloren
           // Neuer Wert von a: 6