Implicit Typomvandling
Svep för att visa menyn
Typomvandling sker hela tiden. Det kan antingen vara implicit omvandling som utförs automatiskt av kompilatorn, eller explicit omvandling, där du uttryckligen omvandlar typerna i koden.
main.cpp
1234567#include <iostream> int main() { int num = 6.5; // Implicit type conversion std::cout << num << std::endl; }
I exemplet omvandlas 6.5, ett flyttal, implicit till int (vilket görs genom att ta bort decimaldelen).
Implicit typomvandling sker när typen på en variabel inte matchar den typ som kompilatorn förväntar sig (t.ex. när vi tilldelar ett värde till int, förväntar sig kompilatorn ett heltal och kommer att utföra en typomvandling om den får något annat).
- Röda pilar indikerar dataförlust. Till exempel, om vi konverterar
floattilllong(ellerint), förlorar vi decimaldelen; - Gröna pilar indikerar ingen dataförlust. Till exempel kan vi säkert konvertera
inttilllong, och resultatet är detsamma; - Gul pil vid konvertering från
long(ellerint) tillfloat(ellerlong) betyder att dataförlust ibland kan uppstå på grund av otillräcklig precision hosfloat(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; }
Ytterligare ett exempel på implicit typomvandling är operatorerna +, -, *, /. Dessa bör utföras på variabler med samma datatyp. Om så inte är fallet gör C++ automatiskt en typomvandling. Till exempel, int / double -> double / double.
Ett annat exempel där implicit typomvandling kan förekomma är villkor. Till exempel, if-satsen.
Den förväntar sig att villkoret är av typen bool. Men tack vare implicit typomvandling kan vi använda andra datatyper som villkor. Här är en bild som visar hur de konverteras till bool:
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal