Articles

C – Type Casting

Werbung

Das Konvertieren eines Datentyps in einen anderen wird als Typumwandlung oder Typumwandlung bezeichnet. Wenn Sie beispielsweise einen ‚long‘-Wert in einer einfachen Ganzzahl speichern möchten, können Sie cast ‚long‘ in ‚int‘ eingeben. Sie können die Werte von einem Typ in einen anderen explizit mit dem Cast−Operator wie folgt konvertieren –

(type_name) expression

Betrachten Sie das folgende Beispiel, in dem der Cast−Operator bewirkt, dass die Division einer ganzzahligen Variablen durch eine andere als Gleitkommaoperation ausgeführt wird −

#include <stdio.h>main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean );}

Wenn der obige Code kompiliert und ausgeführt wird, führt er zu folgendem Ergebnis –

Value of mean : 3.400000

Hier ist zu beachten, dass der Cast-Operator Vorrang vor der Division hat, sodass der Wert von sum zuerst in den Typ double konvertiert wird und schließlich geteilt durch count ergibt sich ein doppelter Wert.

Typkonvertierungen können implizit sein, was vom Compiler automatisch ausgeführt wird, oder sie können explizit durch die Verwendung des Cast-Operators angegeben werden. Es wird als gute Programmierpraxis angesehen, den Cast-Operator immer dann zu verwenden, wenn Typkonvertierungen erforderlich sind.

Integer-Promotion

Integer-Promotion ist der Prozess, bei dem Werte vom Integer-Typ „kleiner“ als int oder unsigned int entweder in int oder unsigned int konvertiert werden. Betrachten Sie ein Beispiel für das Hinzufügen eines Zeichens mit einer Ganzzahl −

#include <stdio.h>main() { int i = 17; char c = 'c'; /* ascii value is 99 */ int sum; sum = i + c; printf("Value of sum : %d\n", sum );}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

Value of sum : 116

Hier ist der Wert von sum 116, da der Compiler eine ganzzahlige Heraufstufung durchführt und den Wert von ‚c‘ in ASCII konvertiert, bevor die eigentliche Additionsoperation ausgeführt wird.

Übliche arithmetische Konvertierung

Die üblichen arithmetischen Konvertierungen werden implizit durchgeführt, um ihre Werte in einen gemeinsamen Typ umzuwandeln. Der Compiler führt zuerst eine ganzzahlige Hochstufung durch; wenn die Operanden immer noch unterschiedliche Typen haben, werden sie in den Typ konvertiert, der in der folgenden Hierarchie am höchsten erscheint −

Die üblichen arithmetischen Konvertierungen werden weder für die Zuweisungsoperatoren noch für die logischen Operatoren durchgeführt && und ||. Nehmen wir das folgende Beispiel, um das Konzept zu verstehen −

#include <stdio.h>main() { int i = 17; char c = 'c'; /* ascii value is 99 */ float sum; sum = i + c; printf("Value of sum : %f\n", sum );}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis –

Value of sum : 116.000000

Hier ist es einfach zu verstehen, dass zuerst c in Integer konvertiert wird, aber da der Endwert doppelt ist, gilt die übliche arithmetische Konvertierung und der Compiler konvertiert i und c in ‚float‘ und fügt sie hinzu, was ‚ Ergebnis.

Werbung