Kursinhalt
C++ Datentypen
C++ Datentypen
Implizite Typumwandlung
In C++ erfolgt die Typumwandlung ständig.
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. Dieses Kapitel konzentriert sich auf die implizite Umwandlung.
Hier ist ein einfaches Beispiel, bei dem eine implizite Typumwandlung auftritt:
main
#include <iostream> int main() { int num = 6.5; 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
) erleiden.
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 Typumwandlung in C++ sind die +
, -
, *
, /
Operationen. Sie sollten auf Variablen mit demselben Datentyp durchgeführt werden. Ist dies nicht der Fall, führt C++ die Typförderung implizit durch. Zum Beispiel, int /
double -> double /
double.
Ein weiteres Beispiel, bei dem Sie die implizite Typumwandlung antreffen können, sind Bedingungen. Zum Beispiel die if
-Anweisung.
Sie erwartet, dass die Bedingung vom Typ bool
ist. Aber dank der impliziten Typumwandlung können wir andere Datentypen als Bedingungen übergeben. Hier ist ein Bild, das zeigt, wie sie in bool
umgewandelt werden:
Hinweis
Leerer String und leere Liste werden ebenfalls als
true
konvertiert.
Danke für Ihr Feedback!