Dies ist eine alte Version des Dokuments!


C -> Typecasting

Unter »Typecasting« versteht man die Typumwandlung einer Variablen oder eines Zeigers eines bestimmten Typs (zB int) in einen anderen Typ (zB float) um vorübergehend eine höhere Genauigkeit zu erreichen oder um zwei Objekte vorübergehend zueinander kompatibel zu machen:

Man unterscheidet prinzipiell zwischen der »impliziten« und »expliziten« Typumwandlung.

Implizite Typumwandlung

Eine implizite Typumwandlung wird nicht im Code vorgenommen, sondern wird vom Compiler automatisch erkannt und entsprechend durchgeführt. Eine »implizite« Typumwandlung kann nur von kleinen zu großen Datentypen erfolgen, wie im folgenden Beispiel:

implizite Typumwamdlung

#include <stdio.h>
 
int main() {
 
  int i = 5;
  float f = i; //implizite Typumwamdlung von int nach float
   {
     printf(" %d\n %f\n",i,f);
   }
  return 0;
}

Die Ausgabe zeigt sich wie folgt:

$ ./cast_1
 5
 5.000000

Explizite Typumwandlung

Bei der »expliziten« Typumwandlung wird die Typumwandlung im Code vorgenommen. Es gilt dabei folgende Syntax: »(Zieltyp)Ausdruck«, wobei »Zieltyp« der Datentyp ist, zu dem »Ausdruck« konvertiert werden soll.

Typecasting integer zu float zu double

#include <stdio.h>
 
int i = 3;       // Die Variable i wird als Integer definiert und mit dem Wert 3 belegt.
float f;         // Die Variable f wird als Float definiert.
double d;        // Die Variable d wird als Double definiert.
double x = 0.1;  // Die Variable x wird als Double definiert und mit dem Wert 0,1 belegt.
 
main (void) {
 
  printf("Typecasting von i auf float: %f\n", (float)i);  // Hier wird die Integervariable für die printf-Ausgabe per explizites Typcasting in ein Float umgewandelt.
  printf("Typecasting von i auf double: %lf\n", (double)i);  // Hier wird die Integervariable für die printf-Ausgabe per explizites Typcasting in ein Double umgewandelt.
  printf("0.1 als double definiert = %.30lf\n", x);  // Hier wird die Double Variable x (-> 0,1) ohne Typecasting aber mit 30 Nachkommastellen ausgegeben.
  printf("0.1 als double definiert und als float ausgegeben = %.30lf\n",(float)x); Hier wird die Double Variable x (0,1) per Typecasting für die Ausgabe in ein Float umgewandelt und mit 30 Nachkommastellen ausgegeben.
}

tux/typecasting.1322661003.txt.gz (3810 views) · Zuletzt geändert: 2011/11/30 14:50 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0