Promotion (Typumwandlung) - LinkFang.de





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 und C++ werden nur die folgenden Typumwandlungen als Promotion bezeichnet.

  • boolint    (nur C++, in C99 entsprechend für _Bool)
  • charint
  • signed charshortint
  • unsigned charunsigned shortunsigned int
  • floatdouble

Arithmetische Operationen werden stets auf den Datentypen int, unsigned int oder double durchgeführt, sofern nicht (mindestens) ein Operand einen größeren Wertebereich (z. B. long int oder long double) aufweist. Dies ist sinnvoll, weil so Datentypen benutzt werden, die an die Wortbreite des Prozessors angepasst sind und deshalb Berechnungen mit diesen Datentypen in der Regel am schnellsten sind.

Beispiel:

  unsigned char bytes[] = { 0xBE, 0xEF } ;
  unsigned int w = (bytes[0] << 8) + bytes[1];  /* w bekommt den Wert 0xBEEF */

Dieser Code funktioniert nur, weil die Bitschiebe-Operation << bereits auf (mindestens 16 Bit fassendem) unsigned int durchgeführt wird.

Funktionsparameter, die an eine Funktion ohne Funktionsprototypen (nur K&R C) oder als Teil einer Ellipse übergeben werden, werden stets „aufgeweitet“ übergeben. So bekommt die Funktion printf() aus der C-Standardbibliothek im folgenden Beispiel nach dem Formatstring 3 int-Argumente übergeben:

  char c = '$';
  short x = 4711;
  short y = -23;
  printf("Das Zeichen ist %c, die Koordinaten sind (%hd,%hd).", c, x, y);

Zeigertypen werden nicht aufgeweitet, so wird ein short* (Zeiger auf short) nicht in einen int* (Zeiger auf int) aufgeweitet.


Kategorien: Datentyp

Quelle: Wikipedia - http://de.wikipedia.org/wiki/Promotion (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.