Typumwandlung

Typumwandlung

Als Typumwandlung (englisch type conversion oder cast) wird in der Informatik die Umwandlung eines Datentyps in einen anderen bezeichnet, um eine Typverletzung zu vermeiden, die durch mangelnde Zuweisungskompatibilität gegeben ist. Hierbei unterscheidet man zwischen

  1. expliziter und impliziter Typumwandlung;
  2. werterhaltender und verlustbehafteter Typumwandlung;
  3. benutzerdefinierter und vordefinierter (“built-in”) Typumwandlung.

Bei der expliziten Typumwandlung wird die Typumwandlung im Programmcode ausdrücklich hingeschrieben. Je nach Typisierung der verwendeten Programmiersprache kann das Fehlen der expliziten Angabe der Typumwandlung einen Laufzeit- oder Compilezeit-Fehler zur Folge haben.

Im Unterschied dazu 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. Dadurch gelten sie als potenzielle Fehlerquelle, wenn sie unabsichtlich verwendet werden. Viele Programmiersprachen, wie z. B. Java, führen implizite Typumwandlung nur dann durch, wenn sie ohne Informationsverlust erfolgen kann, also wenn der Zieldatentyp einen gleichen oder größeren Wertebereich hat als der Ausgangsdatentyp.

Da unterschiedliche Datentypen oftmals unterschiedliche Wertebereiche haben, können bei der Typumwandlung Typerweiterungen (also Vergrößerungen des Wertebereichs, type promotion) oder Typeinschränkung (also Verkleinerungen, type demotion) vorkommen.

Die Typumwandlung von Dateitypen ist mit der Konvertierung einer Datei von einem Dateiformat zu einem anderen vergleichbar, bei der es ebenfalls um die Umwandlung des Speicherformats von Daten geht. Auch hierbei können Informationsverluste vorkommen.

Beispiel in Java

// Explizite Typumwandlung
int i = 100;
byte b = (byte) i;
 
// Implizite Typumwandlung
int j = 12;
double d = j;
 
// Implizite Typumwandlung als Fehlerquelle
int g = 9;
double e = g/2; // e ist nicht 4.5, sondern 4.0, da der zweite Operand eine Ganzzahl ist.
                // Daher wird eine Ganzzahldivison durchgeführt und deren Ergebnis ist 4.
                // Anschließend findet erst die Typumwandlung auf double statt und e weist den Wert 4.0 auf
 
// Um dieses Verhalten zu umgehen, muss der zweite Operand als Gleitkommazahl gekennzeichnet werden
// z. B. indem man statt der 2 eine 2.0 schreibt
int z = 9;
double y = z/2.0;
// oder wieder eine explizite Typumwandlung benutzt
int z = 9;
double y = z/(double)2;

Siehe auch


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Explizite Typumwandlung — 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… …   Deutsch Wikipedia

  • Promotion (Typumwandlung) — Als Promotion (auch eingedeutscht als Aufweitung) bezeichnet man in einigen Programmiersprachen eine bestimmte Art von automatischen Typumwandlungen, die zur Vereinfachung von (meist) arithmetischen Operationen durchgeführt werden. C und C++ In C …   Deutsch Wikipedia

  • Typecast — 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… …   Deutsch Wikipedia

  • Typkonvertierung — 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… …   Deutsch Wikipedia

  • Sprachelemente von C-Sharp — Dieser Artikel bietet eine Übersicht einiger Sprachelemente von C#. Inhaltsverzeichnis 1 Bedingte Ausführung (if, else, switch) 2 Schleifen (for, do, while, foreach) 3 Die Sprunganweisungen break, c …   Deutsch Wikipedia

  • Syntax von C-Sharp — Dieser Artikel bietet eine Übersicht einiger Sprachelemente von C#. Inhaltsverzeichnis 1 Bedingte Ausführung (if, else, switch) 2 Schleifen (for, do, while, foreach) 3 Die Sprungbefehle break, continue, goto und return 4 Die using Anweisung …   Deutsch Wikipedia

  • Generische Programmierung in Java 5.0 — Generische Programmierung wird in Java durch so genannte Generics ermöglicht. Der Begriff steht synonym für „parametrisierte Typen“. Die Idee dahinter ist zusätzliche Variablen für Typen, sog. Typ Variablen, einzuführen. Diese repräsentieren zum… …   Deutsch Wikipedia

  • Void (Schlüsselwort) — Das Schlüsselwort void (engl. für „nichtig“, „ungültig“, „leer“) wird in einigen Programmiersprachen anstelle eines Datentyps benutzt, um anzugeben, dass keine Daten übergeben werden oder der Typ der Daten nicht angegeben ist. Syntaktisch wird… …   Deutsch Wikipedia

  • Generische Programmierung in Java — wird durch sog. Generics ermöglicht. Der Begriff steht synonym für „parametrisierte Typen“. Die Idee dahinter ist, zusätzliche Variablen für Typen einzuführen. Diese Typ Variablen repräsentieren zum Zeitpunkt der Implementierung unbekannte Typen …   Deutsch Wikipedia

  • Is-a — Vererbung dargestellt mittels UML. Die abgeleitete Klasse hat die Attribute x und y und verfügt über die Methoden a und b (im UML Sprachgebrauch Operationen a und b). Die Vererbung (engl. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”