Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

Typumwandlung in C:Typkonvertierung, implizit, explizit mit Beispiel

Was ist Typecasting in C?

Typecasting konvertiert einen Datentyp in einen anderen. Es wird auch als Datenkonvertierung oder Typkonvertierung in der Sprache C bezeichnet. Es ist eines der wichtigen Konzepte, die in die C-Programmierung eingeführt wurden.

Die ‚C‘-Programmierung bietet zwei Typen von Type-Casting-Operationen:

  1. Implizite Typumwandlung
  2. Explizite Typumwandlung

Implizite Typumwandlung

Implizites Typcasting bedeutet Umwandlung von Datentypen, ohne ihre ursprüngliche Bedeutung zu verlieren. Diese Art der Typumwandlung ist unerlässlich, wenn Sie Datentypen ohne ändern möchten Ändern der Bedeutung der in der Variablen gespeicherten Werte.

Die implizite Typkonvertierung in C erfolgt 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 von zwei verschiedenen Datentypen sind, dann wird ein Operand mit niedrigerem Datentyp automatisch in einen höheren Datentyp umgewandelt. 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);
}

Ausgabe:

10
10

  1. Im gegebenen Beispiel haben wir eine Variable vom Datentyp short deklariert, deren Wert als 10 initialisiert wurde.
  2. In der zweiten Zeile haben wir eine Variable vom Datentyp int deklariert.
  3. 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, da der Wert aus der Variablen s, die vom Datentyp short ist, in die Variable a kopiert wird, die vom Datentyp int ist.

Zeichen in Int umwandeln

Betrachten Sie das Beispiel des Hinzufügens eines in ASCII dekodierten Zeichens mit einer ganzen Zahl:

#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 );
}

Ausgabe:

 Value of sum : 108

Hier hat der Compiler eine Integer-Promotion durchgeführt, indem er den Wert von „k“ in ASCII konvertiert hat, bevor er die eigentliche Additionsoperation durchführte.

Arithmetische Konvertierungshierarchie

Der Compiler fährt zunächst damit fort, ein Zeichen in eine Ganzzahl umzuwandeln. Wenn die Operanden noch unterschiedliche Datentypen haben, werden sie in den höchsten Datentyp konvertiert, der in der folgenden Hierarchietabelle erscheint:

Arithmetische Konvertierungshierarchie

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 );}

Ausgabe:

 sum = 120.000000

Zunächst wird die c-Variable in eine ganze Zahl 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

  • Der implizite Typ der Typkonvertierung wird auch als Standardtypkonvertierung bezeichnet. Wir benötigen keine Schlüsselwörter oder spezielle Anweisungen bei der impliziten Typumwandlung.
  • Das Konvertieren von kleineren Datentypen in größere Datentypen wird auch als Type Promotion bezeichnet . Im obigen Beispiel können wir auch sagen, dass der Wert von s zum Typ Integer befördert 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:

  1. Durch die Umwandlung von float in int wird der Bruchteil abgeschnitten, wodurch die Bedeutung des Werts verloren geht.
  2. Durch die Umwandlung von Double in Float werden die Ziffern aufgerundet.
  3. Die Umwandlung von long int in int führt dazu, dass überschüssige höherwertige Bits fallen gelassen werden.

In allen oben genannten Fällen verliert der Wert beim Konvertieren der Datentypen seine Bedeutung. Generell wird vom Compiler vor dem Bedeutungsverlust des Wertes gewarnt.

Die C-Programmierung bietet eine andere Art 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 nach der Division, die an den Variablen var1 und var2 durchgeführt wird, das in der Variablen „result“ gespeicherte Ergebnis in einem ganzzahligen Format vorliegen. In diesem Fall verliert der in der Variable „Ergebnis“ gespeicherte Wert seine Bedeutung, da er den Bruchteil nicht berücksichtigt, der normalerweise bei der Division zweier Zahlen entsteht.

Um die Typkonvertierung in solchen Situationen zu erzwingen, verwenden wir die explizite Typumwandlung.

Es erfordert einen Type-Casting-Operator. Die allgemeine Syntax für Type-Casting-Operationen lautet wie folgt:

(type-name) expression

Hier,

  • 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 man in C Typumwandlungen mit expliziter Typumwandlung durchführt.

#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;
}

Ausgabe:

Value of a is 1.200000
Value of b is 2

  1. Wir haben eine Variable ‚a‘ vom Typ Float initialisiert.
  2. Als nächstes haben wir eine weitere Variable „b“ vom Datentyp Integer. Da die Variablen „a“ und „b“ unterschiedliche Datentypen haben, lässt „C“ die Verwendung eines solchen Ausdrucks nicht zu und es wird ein Fehler ausgelöst. In einigen Versionen von 'C' wird der Ausdruck ausgewertet, aber das Ergebnis ist nicht erwünscht.
  3. Um solche Situationen zu vermeiden, haben wir die Variable „a“ vom Typ „float“ typisiert. Durch die Verwendung expliziter Typumwandlungsmethoden haben wir Float erfolgreich in den Datentyp Integer konvertiert.
  4. Wir haben den Wert von 'a' gedruckt, der immer noch ein Float ist
  5. Nach der Typumwandlung ist das Ergebnis immer eine Ganzzahl „b.“

Auf diese Weise können wir die explizite Typumwandlung in der C-Programmierung implementieren.

Zusammenfassung

  • Typecasting wird auch als Typkonvertierung bezeichnet
  • Es bedeutet, einen Datentyp in einen anderen umzuwandeln.
  • Das Konvertieren eines kleineren Datentyps in einen größeren wird auch als Type Promotion bezeichnet.
  • Es gibt zwei Arten der Typumwandlung:implizite und explizite Typumwandlung in C.
  • Die implizite Typkonvertierung wird automatisch ausgeführt, wenn der kompatible Datentyp gefunden wird.
  • Die explizite Typumwandlung erfordert einen Typumwandlungsoperator.

Beachten Sie die folgenden Regeln für die Programmierpraxis, wenn Sie mit unterschiedlichen Datentypen umgehen, um Datenverluste zu vermeiden:

  • Integer-Typen sollten in Float konvertiert werden.
  • Float-Typen sollten in Double umgewandelt werden.
  • Zeichentypen sollten in Integer umgewandelt werden.

C Sprache

  1. C#-Typkonvertierung
  2. Python-Typkonvertierung und Typumwandlung
  3. Java-Type-Casting
  4. Was mache ich mit den Daten?!
  5. C++ Switch Case-Anweisung mit BEISPIEL
  6. C++ Char-Datentyp mit Beispielen
  7. C++-Struktur mit Beispiel
  8. std::list in C++ mit Beispiel
  9. C# - Datentypen
  10. C# - Typkonvertierung