Kursinhalt
C++ Datentypen
C++ Datentypen
Implizite Typumwandlung
Typumwandlung passiert die ganze Zeit. Es kann entweder eine implizite Umwandlung sein, die automatisch vom Compiler durchgeführt wird. Oder eine explizite Umwandlung, bei der Sie die Typen explizit im Code umwandeln.
main
#include <iostream> int main() { int num = 6.5; // Implicit type conversion std::cout << num << std::endl; }
Im Beispiel wird 6.5
, eine Gleitkommazahl, implizit in int
umgewandelt (was durch Entfernen des Dezimalteils erfolgt).
Eine implizite Typumwandlung erfolgt, wenn der Typ einer Variablen nicht mit dem Typ übereinstimmt, den der Compiler erwartet (z. B. wenn wir einem int
einen Wert zuweisen, erwartet der Compiler eine ganze Zahl und führt eine Typumwandlung durch, wenn er etwas anderes erhält).
Rote Pfeile stehen für Datenverlust. Zum Beispiel, wenn wir
float
inlong
(oderint
) umwandeln, verlieren wir den Dezimalteil;Grüne Pfeile stehen für keinen Datenverlust. Zum Beispiel können wir
int
sicher inlong
umwandeln, und das Ergebnis ist dasselbe;Gelber Pfeil bei der Umwandlung von
long
(oderint
) infloat
(oderlong
) bedeutet, dass wir manchmal einen Datenverlust aufgrund unzureichender Genauigkeit vonfloat
(oderlong
) haben.
main
#include <iostream> #include <iomanip> int main() { int num_int = 123456789; float num_float = num_int; std::cout << std::setprecision(10); std::cout << num_float << std::endl; }
Ein weiteres Beispiel für implizite Typkonvertierung sind die +
, -
, *
, /
Operationen. Sie sollten auf Variablen mit demselben Datentyp durchgeführt werden. Ist dies nicht der Fall, führt C++ implizit die Typförderung durch. Zum Beispiel, int /
double -> double /
double.
Ein weiteres Beispiel, bei dem Sie auf die implizite Typkonvertierung stoßen können, sind Bedingungen. Zum Beispiel die if
-Anweisung.
Sie erwartet, dass die Bedingung vom Typ bool
ist. Aber dank der impliziten Typkonvertierung können wir andere Datentypen als Bedingungen übergeben. Hier ist ein Bild, das zeigt, wie sie in bool
konvertiert werden:
Danke für Ihr Feedback!