Verschiedene Sprachen definieren die Wörter "cast" und "convert" unterschiedlich. Ich denke nicht, dass die Frage anders aussagekräftig ist als in Bezug auf eine bestimmte Sprache.
In C bezieht sich der Begriff "Umwandlung" beispielsweise nur auf einen expliziten Umwandlungsoperator, der aus einem Typnamen in Klammern vor dem zu konvertierenden Ausdruck besteht. Eine "Konvertierung" konvertiert einen Wert eines Typs in einen Wert eines anderen Typs. Einige Konvertierungen werden implementiert, indem die Bits, aus denen die Darstellung besteht, neu interpretiert werden. Sie werden jedoch als Wert-zu-Wert-Konvertierung definiert. (Ja, das gilt auch für Zeigerkonvertierungen. Unterschiedliche Zeigertypen können unterschiedliche Darstellungen haben.)
Beachten Sie, dass es in C keine "implizite Besetzung" gibt.
Einige Konvertierungen sind explizit und werden von einem Cast-Operator angegeben. Andere sind implizit und werden in bestimmten Fällen angewendet, wenn ein Ausdruck eines Typs in einem Kontext verwendet wird, der einen Ausdruck eines anderen Typs benötigt. Die durchgeführte Konvertierung ist in beiden Fällen genau gleich.
Zum Beispiel:
double x = 1.23;
int y = (int)x; /* A cast, or explicit conversion, setting y to 1 */
int z = x; /* An implicit conversion, setting z to 1. */
C ++ ist ähnlich; Es hat die gleichen Abgüsse und Umrüstungen wie C, und es fügt eine funktionale Notation entspricht einem gegossenen Ausdruck C-Stil, plus 4 spezifischere Stichwort: const_cast
, dynamic_cast
, reinterpret_cast
, und static_cast
.