Typumwandlung in C: Typkonvertierung, implizit, explizit mit Beispiel
Was ist Typecasting in C?
Typecasting ist die Konvertierung eines Datentyps in einen anderen. In der Programmiersprache C wird es auch Datenkonvertierung oder Typkonvertierung genannt. Es ist eines der wichtigen Konzepte, die in der C-Programmierung eingefรผhrt wurden.
Die C-Programmierung bietet zwei Arten von Typumwandlungsvorgรคngen:
- Implizites Typgieรen
- Explizite Typumwandlung
Implizites Typgieรen
Implizite Typumwandlung bedeutet die Konvertierung von Datentypen, ohne dass ihre ursprรผngliche Bedeutung verloren geht. Diese Art der Typumwandlung ist wichtig, wenn Sie Datentypen รคndern mรถchten ohne รndern der Bedeutung der darin gespeicherten Werte Variable.
Implizite Typkonvertierungen in C erfolgen automatisch, wenn ein Wert in seinen kompatiblen Datentyp kopiert wird. Wรคhrend der Konvertierung werden strenge Regeln fรผr die Typkonvertierung angewendet. Wenn die Operanden zwei verschiedene Datentypen haben, wird ein Operand mit einem niedrigeren Datentyp automatisch in einen hรถheren Datentyp konvertiert. Diese Art der Typkonvertierung ist im folgenden Beispiel zu sehen.
#include<stdio.h>
int main(){
short a=10; //initializing variable of short data type
int b; //declaring int variable
b=a; //implicit type casting
printf("%d\n",a);
printf("%d\n",b);
}
Ausgang:
10 10
- Im gegebenen Beispiel haben wir eine Variable vom kurzen Datentyp deklariert, deren Wert mit 10 initialisiert wurde.
- In der zweiten Zeile haben wir eine Variable vom Datentyp int deklariert.
- In der dritten Zeile haben wir der Variablen a den Wert der Variablen s zugewiesen. In der dritten Zeile wird eine implizite Typkonvertierung durchgefรผhrt, indem der Wert der Variablen s, die einen kurzen Datentyp hat, in die Variable a kopiert wird, die einen int-Datentyp hat.
Konvertieren von Zeichen in Int
Betrachten Sie das Beispiel des Hinzufรผgens eines in ASCII dekodierten Zeichens mit einer Ganzzahl:
#include <stdio.h>
main() {
int number = 1;
char character = 'k'; /*ASCII value is 107 */
int sum;
sum = number + character;
printf("Value of sum : %d\n", sum );
}
Ausgang:
Value of sum : 108
Hier hat der Compiler eine Ganzzahlerhรถhung durchgefรผhrt, indem er den Wert von โkโ in ASCII konvertiert hat, bevor die eigentliche Additionsoperation ausgefรผhrt wurde.
Arithmetische Konvertierungshierarchie
Der Compiler wandelt zunรคchst ein Zeichen in eine Ganzzahl um. Wenn die Operanden immer noch unterschiedliche Datentypen haben, werden sie in den hรถchsten Datentyp konvertiert, der im folgenden Hierarchiediagramm erscheint:

Betrachten Sie das folgende Beispiel, um das Konzept zu verstehen:
#include <stdio.h>
main() {
int num = 13;
char c = 'k'; /* ASCII value is 107 */
float sum;
sum = num + c;
printf("sum = %f\n", sum );}
Ausgang:
sum = 120.000000
Zunรคchst wird die c-Variable in eine Ganzzahl konvertiert, aber der Compiler konvertiert num und c in โfloatโ und fรผgt sie hinzu, um ein โfloatโ-Ergebnis zu erzeugen.
Wichtige Punkte zu impliziten Konvertierungen
- Die implizite Typkonvertierung wird auch als Standardtypkonvertierung bezeichnet. Bei der impliziten Typumwandlung sind weder Schlรผsselwรถrter noch spezielle Anweisungen erforderlich.
- Die Konvertierung von einem kleineren Datentyp in einen grรถรeren Datentyp wird auch als bezeichnet Typ Fรถrderung. Im obigen Beispiel kรถnnen wir auch sagen, dass der Wert von s zum Typ Integer hochgestuft wird.
- Die implizite Typkonvertierung erfolgt immer mit den kompatiblen Datentypen.
Wir kรถnnen keine implizite Typumwandlung fรผr Datentypen durchfรผhren, die nicht miteinander kompatibel sind, wie zum Beispiel:
- Durch die Konvertierung von float in int wird der Bruchteil abgeschnitten, wodurch die Bedeutung des Werts verloren geht.
- Bei der Konvertierung von Double in Float werden die Ziffern aufgerundet.
- Das Konvertieren von long int in int fรผhrt dazu, dass รผberschรผssige Bits hรถherer Ordnung gelรถscht werden.
In allen oben genannten Fรคllen verliert der Wert bei der Konvertierung der Datentypen seine Bedeutung. Im Allgemeinen wird der Bedeutungsverlust des Werts vom Compiler gewarnt.
'C'-Programmierung bietet eine weitere Mรถglichkeit der Typumwandlung, nรคmlich die explizite Typumwandlung.
Explizite Typumwandlung
Bei der impliziten Typkonvertierung wird der Datentyp automatisch konvertiert. Es gibt einige Szenarien, in denen wir mรถglicherweise eine Typkonvertierung erzwingen mรผssen. Angenommen, wir haben eine Variable div, die die Division zweier Operanden speichert, die als int-Datentyp deklariert sind.
int result, var1=10, var2=3; result=var1/var2;
In diesem Fall wird das in der Variable โresultโ gespeicherte Ergebnis nach der Division der Variablen var1 und var2 im Integer-Format vorliegen. Wenn dies geschieht, verliert der in der Variable โresultโ gespeicherte Wert seine Bedeutung, da er den Bruchteil nicht berรผcksichtigt, der normalerweise bei der Division zweier Zahlen entsteht.
Um in solchen Situationen die Typkonvertierung zu erzwingen, verwenden wir die explizite Typumwandlung.
Es ist ein Typumwandlungsoperator erforderlich. Die allgemeine Syntax fรผr Typumwandlungsoperationen lautet wie folgt:
(type-name) expression
Dabei steht:
- Der Typname ist der Standarddatentyp der Sprache โCโ.
- Ein Ausdruck kann eine Konstante, eine Variable oder ein tatsรคchlicher Ausdruck sein.
Lassen Sie uns ein Programm schreiben, um zu demonstrieren, wie eine Typumwandlung in C mit expliziter Typumwandlung durchgefรผhrt wird.
#include<stdio.h>
int main()
{
float a = 1.2;
//int b = a; //Compiler will throw an error for this
int b = (int)a + 1;
printf("Value of a is %f\n", a);
printf("Value of b is %d\n",b);
return 0;
}
Ausgang:
Value of a is 1.200000 Value of b is 2
- Wir haben eine Variable โaโ vom Typ float initialisiert.
- Als nรคchstes haben wir eine weitere Variable โbโ vom Datentyp โGanzzahlโ. Da die Variablen โaโ und โbโ unterschiedliche Datentypen haben, lรคsst โCโ die Verwendung eines solchen Ausdrucks nicht zu und lรถst einen Fehler aus. In einigen Versionen von โCโ wird der Ausdruck ausgewertet, das Ergebnis ist jedoch unerwรผnscht.
- Um solche Situationen zu vermeiden, haben wir die Variable โaโ vom Typ float typisiert. Mithilfe expliziter Typumwandlungsmethoden haben wir Float erfolgreich in den Datentyp Integer konvertiert.
- Wir haben den Wert โaโ gedruckt, der immer noch ein Float ist
- Nach der Typumwandlung ist das Ergebnis immer eine Ganzzahl โbโ.
Auf diese Weise kรถnnen wir eine explizite Typumwandlung in der C-Programmierung implementieren.
Zusammenfassung
- Typecasting wird auch als Typkonvertierung bezeichnet
- Es bedeutet, einen Datentyp in einen anderen umzuwandeln.
- Die Konvertierung eines kleineren Datentyps in einen grรถรeren wird auch als Typpromotion bezeichnet.
- Es gibt zwei Arten der Typkonvertierung: implizite und explizite Typkonvertierung in C.
- Die implizite Typkonvertierung erfolgt automatisch, wenn der kompatible Datentyp gefunden wird.
- Fรผr eine explizite Typkonvertierung ist ein Typumwandlungsoperator erforderlich.
Beachten Sie beim Umgang mit unterschiedlichen Datentypen die folgenden Regeln fรผr die Programmierpraxis, um Datenverlust zu vermeiden:
- Ganzzahltypen sollten in Float konvertiert werden.
- Float-Typen sollten in Double-Typen konvertiert werden.
- Zeichentypen sollten in Ganzzahlen konvertiert werden.


