C Typumwandlung
Eine Typumwandlung (Cast) dient dazu, eine Variable von einem Typ in einen anderen Datentyp umzuwandeln. Wenn Sie beispielsweise einen long-Wert in einem einfachen Integer speichern möchten, müssen Sie den Typ long in den Typ int umwandeln. Sie können denCast-Operatorverwenden, um einen Wert explizit von einem Typ in einen anderen umzuwandeln, wie unten gezeigt:
(type_name) expression
Bitte sehen Sie sich das folgende Beispiel an, in dem mit einem Cast-Operator eine Integer-Variable durch eine andere Integer-Variable dividiert wird, um eine Gleitkommazahl zu erhalten:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Value of mean : 3.400000
Beachten Sie hier, dass die Priorität des Cast-Operators höher ist als die Division, daher wird der Wert vonsumzuerst in den Typdoubleumgewandelt und dann durch count dividiert, was einen Wert vom Typ double ergibt.
Die Typumwandlung kann implizit erfolgen, automatisch vom Compiler durchgeführt, oder explizit erfolgen, indem derCast-Operatorangegeben wird. In der Programmierung ist es eine gute Programmiergewohnheit, den Cast-Operator immer dann zu verwenden, wenn eine Typumwandlung erforderlich ist.
Integer-Promotion
Integer-Promotion bezeichnet die Umwandlung von Integer-Typen, die kleiner alsintoderunsigned intsind, in den Integer-Typintoderunsigned intden Vorgang. Bitte sehen Sie sich das folgende Beispiel an, in dem ein Zeichen zu einem int addiert wird:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Value of sum : 116
Hier ist der Wert von sum 116, weil der Compiler eine Integer-Promotion durchgeführt hat, wodurch der Wert von 'c' während der eigentlichen Additionsoperation in seinen entsprechenden ASCII-Wert umgewandelt wurde.
Gängige arithmetische Konvertierungen
Übliche arithmetische Konvertierungendienen dazu, Werte implizit in denselben Typ umzuwandeln. Der Compiler führt zuerstInteger-Promotion durch, wenn die Operandentypen unterschiedlich sind, werden sie in den Typ der höchsten Ebene umgewandelt, die in der folgenden Hierarchie erscheint:
Die üblichen arithmetischen Konvertierungen gelten nicht für Zuweisungsoperatoren oder für die logischen Operatoren && und ||. Sehen wir uns das folgende Beispiel an, um dieses Konzept zu verstehen:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Value of sum : 116.000000
Hier wird c zuerst in einen Integer umgewandelt, aber da der Endwert vom Typ float ist, werden die üblichen arithmetischen Konvertierungen angewendet. Der Compiler wandelt i und c in Gleitkommazahlen um, addiert sie und erhält eine Gleitkommazahl.
Weitere Erweiterungen