Implicit Type Conversion
Stryg for at vise menuen
Typekonvertering forekommer hele tiden. Det kan enten være implicit konvertering, som udføres automatisk af compileren, eller eksplicit konvertering, hvor du eksplicit konverterer typerne i koden.
main.cpp
1234567#include <iostream> int main() { int num = 6.5; // Implicit type conversion std::cout << num << std::endl; }
I eksemplet bliver 6.5, et flydende tal, implicit konverteret til int (hvilket sker ved at fjerne decimaldelen).
Implicit typekonvertering sker, når typen af en variabel ikke matcher den type, som compileren forventer (f.eks. når vi tildeler en værdi til int, forventer compileren et heltal, og den vil udføre en typekonvertering, hvis den modtager noget andet).
- Røde pile angiver datatab. For eksempel, hvis vi konverterer
floattillong(ellerint), mister vi decimaldelen; - Grønne pile angiver intet datatab. For eksempel kan vi sikkert konvertere
inttillong, og resultatet er det samme; - Gul pil ved konvertering fra
long(ellerint) tilfloat(ellerlong) betyder, at der nogle gange opstår datatab på grund af utilstrækkelig præcision affloat(ellerlong).
main.cpp
1234567891011#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; }
Et andet eksempel på implicit typekonvertering er operationerne +, -, *, /. Disse bør udføres på variabler med samme datatyper. Hvis det ikke er tilfældet, foretager C++ automatisk typeforfremmelse. For eksempel, int / double -> double / double.
Et andet eksempel, hvor du kan støde på implicit typekonvertering, er betingelser. For eksempel if-sætningen.
Den forventer, at betingelsen er af typen bool. Men takket være implicit typekonvertering kan vi bruge andre datatyper som betingelser. Her er et billede, der viser, hvordan de konverteres til bool:
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