Eksplicit Typekonvertering
Stryg for at vise menuen
Hvis du arbejder med variabler af typen int i stedet for blot tal i koden, skal du konvertere værdien af en variabel til double eller float. Dette kan gøres ved hjælp af følgende syntaks:
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; }
Der findes flere måder at udføre eksplicit typekonvertering på. Denne metode kaldes C-stil konvertering:
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 }
Selvom denne tilgang er kortfattet, angiver den ikke tydeligt hensigten eller arten af konverteringen, hvilket kan føre til tvetydighed og potentiel forkert brug.
Der findes mere eksplicitte og sikrere casting-operatorer, som giver bedre kontrol over typekonverteringer.
De fleste gange har du kun brug for en static_conversion. Vi vil ikke gennemgå andre casts i detaljer. Her er syntaksen:
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 }
Vi vil ikke dække forskellen mellem alle disse. Generelt er static_cast at foretrække, da det er mere restriktivt og kan forhindre uventet adfærd med komplekse datatyper.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat