Implicit Type-Konvertering
Stryg for at vise menuen
Typekonvertering forekommer ofte. Det kan enten være implicit konvertering, som udføres automatisk af compileren, eller eksplicit konvertering, hvor typerne konverteres eksplicit i koden.
main.cpp
1234567#include <iostream> int main() { int num = 6.5; // Implicit type conversion std::cout << num << std::endl; }
I eksemplet konverteres 6.5, et flydende tal, implicit til int (hvilket sker ved at fjerne decimaldelen).
Implicit typekonvertering opstår, når typen af en variabel ikke matcher den type, som compileren forventer (f.eks. når der tildeles en værdi til int, forventer compileren et heltal og 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++ implicit 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 anvende 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