C ++ - Typkonvertierung

In diesem Tutorial lernen wir anhand von Beispielen die Grundlagen der C ++ - Typkonvertierung kennen.

Mit C ++ können wir Daten eines Typs in Daten eines anderen konvertieren. Dies wird als Typkonvertierung bezeichnet.

In C ++ gibt es zwei Arten der Typkonvertierung.

  1. Implizite Konvertierung
  2. Explizite Konvertierung (auch als Typguss bekannt)

Implizite Typkonvertierung

Die vom Compiler automatisch durchgeführte Typkonvertierung wird als implizite Typkonvertierung bezeichnet. Diese Art der Konvertierung wird auch als automatische Konvertierung bezeichnet.

Betrachten wir zwei Beispiele für die implizite Typkonvertierung.

Beispiel 1: Konvertierung von int nach double

 // Working of implicit type-conversion #include using namespace std; int main() ( // assigning an int value to num_int int num_int = 9; // declaring a double type variable double num_double; // implicit conversion // assigning int value to a double variable num_double = num_int; cout << "num_int = " << num_int << endl; cout << "num_double = " << num_double << endl; return 0; )

Ausgabe

 num_int = 9 num_double = 9

Im Programm haben wir inteiner doubleVariablen Daten zugewiesen .

 num_double = num_int;

Hier wird der intWert doublevom Compiler automatisch konvertiert, bevor er der Variablen num_double zugewiesen wird. Dies ist ein Beispiel für eine implizite Typkonvertierung.

Beispiel 2: Automatische Konvertierung von double nach int

 //Working of Implicit type-conversion #include using namespace std; int main() ( int num_int; double num_double = 9.99; // implicit conversion // assigning a double value to an int variable num_int = num_double; cout << "num_int = " << num_int << endl; cout << "num_double = " << num_double << endl; return 0; )

Ausgabe

 num_int = 9 num_double = 9,99

Im Programm haben wir doubleeiner intVariablen Daten zugewiesen .

 num_double = num_int;

Hier wird der doubleWert intvom Compiler automatisch konvertiert, bevor er der Variablen num_int zugewiesen wird. Dies ist auch ein Beispiel für eine implizite Typkonvertierung.

Hinweis: Da intes keinen Dezimalteil geben kann, werden die Ziffern nach dem Dezimalpunkt im obigen Beispiel abgeschnitten.

Datenverlust während der Konvertierung (schmale Konvertierung)

Wie wir aus dem obigen Beispiel gesehen haben, ist die Konvertierung von einem Datentyp in einen anderen anfällig für Datenverlust. Dies geschieht, wenn Daten eines größeren Typs in Daten eines kleineren Typs konvertiert werden.

Möglicher Datenverlust während der Typkonvertierung

Explizite C ++ - Konvertierung

Wenn der Benutzer Daten manuell von einem Typ in einen anderen ändert, wird dies als explizite Konvertierung bezeichnet . Diese Art der Umwandlung wird auch als Typguss bezeichnet .

Es gibt drei Möglichkeiten, wie wir die explizite Konvertierung in C ++ verwenden können. Sie sind:

  1. Casting im C-Stil (auch als Cast-Notation bekannt )
  2. Funktionsnotation (auch als altes Casting im C ++ - Stil bekannt )
  3. Typkonvertierungsoperatoren

Casting im C-Stil

Wie der Name schon sagt, wird diese Art des Castings von der Programmiersprache C bevorzugt . Es wird auch als Besetzungsnotation bezeichnet .

Die Syntax für diesen Stil lautet:

 (data_type)expression;

Beispielsweise,

 // initializing int variable int num_int = 26; // declaring double variable double num_double; // converting from int to double num_double = (double)num_int;

Casting im Funktionsstil

Wir können die Funktion wie Notation auch verwenden, um Daten von einem Typ in einen anderen umzuwandeln.

Die Syntax für diesen Stil lautet:

 data_type(expression);

Beispielsweise,

 // initializing int variable int num_int = 26; // declaring double variable double num_double; // converting from int to double num_double = double(num_int);

Beispiel 3: Typguss

 #include using namespace std; int main() ( // initializing a double variable double num_double = 3.56; cout << "num_double = " << num_double << endl; // C-style conversion from double to int int num_int1 = (int)num_double; cout << "num_int1 = " << num_int1 << endl; // function-style conversion from double to int int num_int2 = int(num_double); cout << "num_int2 = " << num_int2 << endl; return 0; )

Ausgabe

 num_double = 3.56 num_int1 = 3 num_int2 = 3

Wir haben sowohl die Typkonvertierung im C -Stil als auch das Casting im Funktionsstil für die Typkonvertierung verwendet und die Ergebnisse angezeigt. Da sie dieselbe Aufgabe ausführen, geben uns beide die gleiche Ausgabe.

Typkonvertierungsoperatoren

Neben diesen beiden Typumwandlungen verfügt C ++ auch über vier Operatoren für die Typkonvertierung. Sie werden als Typkonvertierungsoperatoren bezeichnet . Sie sind:

  • static_cast
  • dynamic_cast
  • const_cast
  • reinterpret_cast

Wir werden in späteren Tutorials mehr über diese Darsteller erfahren.

Empfohlene Tutorials:

  • C ++ String zu int und umgekehrt
  • C ++ String zum Floaten, Double und umgekehrt

Interessante Beiträge...