Programmiersprache C/C++

Explizite Typumwandlungen (cast)

  ( typ ) ausdruck
ausdruck wird ausgewertet, der ermittelte Wert wird anschließend in einen Wert des Datentyps typ umgewandelt.

Die Anwendung des sogenannten Cast-Operators ist dann sinnvoll, wenn der Wert von ausdruck in einem anderen Datentyp als den durch ausdruck bestimmten benötigt wird.

Beispiel 1:

  int m = 1, n = 2;
  double d;

  d = m / n;                      /* liefert  0  */
  d = double(m) / (double)n;      /* liefert  0.5  */
Beispiel 2:
  float x = 2, y;

  y = (float)sqrt((double)x);     /* sqrt arbeitet mit dem Typ double */
Bemerkung:
In diesem Fall könnte in ANSI-C der Prototyp der Funktion sqrt (definiert in math.h) dafür sorgen, daß auch
  y = sqrt(x);
zum korrekten Ergebnis führt.
Es gehört jedoch zum guten Programmierstil, durch Angabe des Cast-Operators explizit auf die auszugleichenden Typunterschiede hinzuweisen.

Die implizit bei Zuweisungen angewendeten Regeln der Werttransformation gelten auch für explizite Typumwandlungen in vollem Umfang.

Beispiel 3:

  (void)getchar();
Das Programm soll auf die Betätigung einer beliebigen Taste warten, das eingegebene Zeichen wird nicht benötigt.


C++ ermöglicht eine alternative syntaktische Darstellung:

  typ ( ausdruck )
Beispiel:
  #include <stdio.h>

  int main(void)
  {
    char c = 'a';
    int i = int(c);
    double d = double(c);
  
    printf("%c %d %lf\n", c, i, d);

    return 0;
  }

Zurück zum Menü
Zurück zur vorigen Seite Weiter zur nächsten Seite

P. Böhme, 03.03.1996