Explizite Typumwandlung
Swipe um das Menü anzuzeigen
Wenn Sie mit Variablen vom Typ int arbeiten, anstatt nur mit Zahlen im Code, müssen Sie den Wert einer Variablen in double oder float umwandeln. Dies kann mit folgender Syntax erreicht werden:
main.cpp
12345678910#include <iostream> int main() { int num1 = 9; int num2 = 4; std::cout << "No conversion: " << num1 / num2 << std::endl; std::cout << "With conversion: " << (double)num1 / num2 << std::endl; }
Es gibt mehrere Möglichkeiten, eine explizite Typumwandlung durchzuführen. Diese wird als C-Style-Konvertierung bezeichnet:
main.cpp
123456789101112#include <iostream> int main() { float num = 6.5; std::cout << (int)num << std::endl; // 6.5 to `int` is 6 std::cout << (bool)num << std::endl; // 6.5 to `bool` is true // Or std::cout << int(num) << std::endl; // 6.5 to `int` is 6 std::cout << bool(num) << std::endl; // 6.5 to `bool` is true }
Obwohl dieser Ansatz prägnant ist, zeigt er die Absicht oder Art der Umwandlung nicht eindeutig an, was zu Mehrdeutigkeiten und möglichem Missbrauch führen kann.
Es gibt explizitere und sicherere Casting-Operatoren, die eine bessere Kontrolle über Typumwandlungen bieten.
In den meisten Fällen wird nur eine static_conversion benötigt. Andere Casts werden wir nicht ausführlich behandeln. Hier ist die Syntax:
main.cpp
12345678#include <iostream> int main() { float num = 6.5; std::cout << static_cast<int>(num) << std::endl; // 6.5 to `int` is 6 std::cout << static_cast<bool>(num) << std::endl; // 6.5 to `bool` is true }
Wir werden den Unterschied zwischen all diesen nicht behandeln. Im Allgemeinen ist static_cast vorzuziehen, da es restriktiver ist und unerwartetes Verhalten bei komplexen Datentypen verhindern kann.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen