Typumwandlung
aus Wikipedia, der freien Enzyklopädie
Typumwandlung (engl. type conversion oder cast) bezeichnet in der Informatik die Umwandlung des Wertes eines Datentyps in einen Wert eines anderen Datentyps.
Beispielsweise kann es sein, dass man eine Zahl als Zeichenkette darstellen möchte. Es muss dann eine Umwandlung der für die Darstellung der Zahl verwendeten Daten in die für die Darstellung einer Zeichenkette notwendigen Daten vorgenommen werden:
string s; // Variable s kann Zeichenkette aufnehmen int i = 42; // Variable i nimmt ganze Zahl 42 auf (z. B. Daten "002A" (hex) auf 16-bit Rechner) s = i; // s soll Wert von i annehmen --Typkonflikt-- hier muss Konvertierung erfolgen! // z. B. in "343200" (ASCII Code für Zeichen 4 und 2, sowie C-String Terminator)
Oft kann der eine Datentyp den gesamten Wertebereich des anderen Datentyp aufnehmen, so dass man je nach Vergrößerung oder Verkleinerung der Wertemenge des Datentyps von Typerweiterung (engl. type promotion) oder Typeinschränkung (engl. type demotion) spricht.
Es gibt explizite und implizite Typumwandlungen.
[Bearbeiten] Explizite Typumwandlungen
Eine explizite Typumwandlung wird im Programmcode angegeben. Eine explizite Typumwandlung bezeichnet man auch als Cast (aus dem Englischen).
Das folgende Beispielprogramm ist in Java verfasst:
int i = 100; byte b = (byte) i;
Dabei handelte es sich bei der Angabe (byte) um die explizite Typumwandlungsoperation ("Cast").
Je nach Typisierung der verwendeten Programmiersprache kann das Fehlen der expliziten Angabe der Typumwandlung einen Fehler während der Kompilierung oder während der Laufzeit zur Folge haben.
Eine Variante expliziter Typumwandlung ist die Verwendung eigens dafür geschriebener Funktionen:
int i = 100; byte b = int2byte( i );
Funktionen analog zu int2byte() werden insbesondere in Programmiersprachen verwendet, die keine Operatoren dafür besitzen.
[Bearbeiten] Implizite Typumwandlungen
Im Unterschied zu expliziten Typumwandlungen erscheinen implizite Typumwandlungen nicht im Quelltext. Sie werden entweder nach durch die jeweilige Programmiersprache vorgegebenen Vorschriften, oder gemäß einem vom Programmierer an einer anderen Stelle im Quelltext festgelegten Verfahren durchgeführt.
Beispiel:
byte b = 100; int i = b;
Dabei findet in der zweiten Zeile eine implizite Typumwandlung vom Typ byte in den Typ int statt. In diesem Fall ist die implizite Typumwandlung durch die Programmiersprache festgelegt.
Implizite Typumwandlung findet oftmals nur dann statt, wenn kein Informationsverlust erfolgen kann, also wenn der Zieldatentyp einen gleichen oder größeren Wertebereich hat als der Ausgangsdatentyp. So erfolgt bei Bedarf zwar eine implizite Typumwandlung von byte (8 bit) nach int (16 bit), nicht aber umgekehrt.