Typecast

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 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.


Inhaltsverzeichnis

Explizite Typumwandlungen

Eine explizite Typumwandlung wird im Programmcode angegeben. Eine explizite Typumwandlung bezeichnet man auch als type cast (aus dem Englischen).

Der folgende Code-Schnipsel zeigt eine explizite Typumwandlung in Java:

int  i = 100;
byte b = (byte) i;

Dabei handelte es sich bei der Angabe (byte) um die explizite Typumwandlungsoperation.

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.

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 sie ohne 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.

Beispiel aus Java

Das folgende in der Programmiersprache Java geschriebene Beispiel verdeutlicht, wie implizite Typumwandlungen zu Fehlern in Programmen führen können, die schwer zu entdecken sind.

int z = 18;
float y = z / 4;                // explizit: float y = (float) ( z / 4 )
System.out.print(y);

Dieser Java-Code liefert, gegen die Intuition, nicht „4.5“ (4,5) als Ergebnis, sondern „4.0“ (4,0). Grund hierfür ist der Ausdruck z/4, der als ganzzahlige Division interpretiert wird, weil beide Argumente („z“ und „4“) vom Typ Integer sind. 18/4 = 4 Rest 2, der ganzzahlige Divisionsoperator „/“liefert somit 4. Die ganze Zahl 4 wird dann implizit in den Gleitkommawert („float“) „4.0“ umgewandelt, d. h. vor der Division findet keine Umwandlung statt. Als Kommentar ist die implizite Typumwandlung, die der Java-Compiler einfügt, explizit aufgeführt. Es gibt mehrere Möglichkeiten, den Code so zu ändern, dass er das gewünschte Ergebnis liefert. Falls einer der Parameter bei einer Division den Type „float“ hat, und der andere den Type „int“, so wird der ganzzahlige Wert implizit in eine Gleitkommazahl umgewandelt, und die Division als Gleitkommadivision durchgeführt.

int z = 18;
float y = z / 4.0f;
System.out.print(y);

Hier wird somit die Variable „z“ implizit in einen Float konvertiert, und zwar vor der Division. Ein andere Lösung ist es, die Variable „z“ explizit in einen Gleitkommawert umzuwandeln:

int z = 18;
float y =  (float) z / 4; 
System.out.print(y);

Bei dieser Version wird die ganze Zahl 4 implizit in eine Gleitkommazahl umgewandelt, da die Variable „z“ explizit in eine Gleitkommazahl umgewandelt wird, denn die Typumwandlung bindet stärker als der Bruchstrich (Operatorrangfolge). Die einzige Version ohne implizite Umwandlungen erfordert es, dass beide Parameter der Division Gleitkommazahlen sind, und lautet deshalb:

int z = 18;
float y =  (float) z / 4.0f;
System.out.print(y);

Siehe auch

Konvertierung (Informatik)


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

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

  • typecast — ► VERB (past and past part. typecast) (usu. be typecast) 1) repeatedly cast (an actor) in the same type of role because their appearance is appropriate or they are known for such roles. 2) regard as fitting a stereotype …   English terms dictionary

  • Typecast — es una banda de rock alternativo de Filipinas. Siendo una de las bandas más populares en línea, Typecast fue pionera sobre el levantamiento en Myspace, Purevolume y entre otras sobre la promoción de un marketing, relacionados con la sociedad y… …   Wikipedia Español

  • typecast — [tīp′kast΄] vt. typecast, typecasting to cast (an actor) repeatedly in the same type of part, or in the part of a character whose traits are very much like the actor s own …   English World dictionary

  • typecast — also type cast, with reference to actors, 1946 (adj. and v.), perhaps a deliberate pun on the verbal phrase in the print type founding sense (attested from 1847). See TYPE (Cf. type) (n.) + CAST (Cf. cast) (v.) …   Etymology dictionary

  • typecast — v. (D; tr.) to typecast as; in (to be typecast in a certain role) * * * [ taɪpkɑːst] in (to be typecast in a certain role) (D; tr.) to typecast as …   Combinatory dictionary

  • typecast — [[t]ta͟ɪpkɑːst, kæst[/t]] typecasts, typecasting VERB: usu passive (The form typecast is used in the present tense and is the past tense and past participle.) If an actor is typecast, they play the same type of character in every play or film… …   English dictionary

  • typecast — UK [ˈtaɪpˌkɑːst] / US [ˈtaɪpˌkæst] verb [transitive] Word forms typecast : present tense I/you/we/they typecast he/she/it typecasts present participle typecasting past tense typecast past participle typecast 1) to always give an actor the same… …   English dictionary

  • typecast — /tuyp kast , kahst /, v.t., typecast, typecasting. Theat. 1. to cast (a performer) in a role that requires characteristics of physique, manner, personality, etc., similar to those possessed by the performer. 2. to cast (a performer) repeatedly in …   Universalium

  • typecast — type|cast [ˈtaıpka:st US kæst] v past tense and past participle typecast [T] 1.) to always give an actor the same type of character to play ▪ He always gets typecast as the villain. 2.) to give someone a particular type of job, activity etc to do …   Dictionary of contemporary English

  • typecast — verb /ˈtaɪp.kɑːst,ˈtaɪp.kæst/ a) To cast an actor in the same kind of role repeatedly. Typecasting in Java. b) To identify someone as being of a specific type because of their appearance, colour, religion etc …   Wiktionary

  • typecast — verb (past and past participle typecast) 1》 cast (an actor or actress) repeatedly in the same type of role, as a result of the appropriateness of their appearance or previous success in such roles. 2》 regard as fitting a stereotype …   English new terms dictionary

Share the article and excerpts

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