Typumwandlung - LinkFang.de





Typumwandlung


Als Typumwandlung (englisch type coercion, englisch type conversion oder type casting) 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;
 
// Bei Zeichenketten wird beim expliziten Casten String.valueOf(x)
// bzw. bei Objekten x.toString() aufgerufen:
 
int i = 164;
String str = String.valueOf(i);
 
// Implizite Typumwandlung bei Zeichenketten
 
int i = 164;
String str = "" + i;
 
// 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;

Einzelnachweise

Siehe auch


Kategorien: Datentyp

Quelle: Wikipedia - http://de.wikipedia.org/wiki/Typumwandlung (Vollständige Liste der Autoren des Textes [Versionsgeschichte])    Lizenz: CC-by-sa-3.0

Änderungen: Alle Bilder mit den meisten Bildunterschriften wurden entfernt. Ebenso alle zu nicht-existierenden Artikeln/Kategorien gehenden internen Wikipedia-Links (Bsp. Portal-Links, Redlinks, Bearbeiten-Links). Entfernung von Navigationsframes, Geo & Normdaten, Mediadateien, gesprochene Versionen, z.T. ID&Class-Namen, Style von Div-Containern, Metadaten, Vorlagen, wie lesenwerte Artikel. Ansonsten sind keine Inhaltsänderungen vorgenommen worden. Weiterhin kann es durch die maschinelle Bearbeitung des Inhalts zu Fehlern gerade in der Darstellung kommen. Darum würden wir jeden Besucher unserer Seite darum bitten uns diese Fehler über den Support mittels einer Nachricht mit Link zu melden. Vielen Dank!

Stand der Informationen: August 201& - Wichtiger Hinweis: Da die Inhalte maschinell von Wikipedia übernommen wurden, ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.de nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein, bitten wir Sie darum uns per Support oder E-Mail zu kontaktieren. Wir werden uns dann innerhalb von spätestens 10 Tagen um Ihr Anliegen kümmern. Auch ohne Anliegen erfolgt mindestens alle drei Monate ein Update der gesamten Inhalte.