Implisitt Typekonvertering
Sveip for å vise menyen
Typekonvertering skjer hele tiden. Det kan enten være implisitt konvertering som utføres automatisk av kompilatoren, eller eksplisitt konvertering, der du eksplisitt konverterer typene i koden.
main.cpp
1234567#include <iostream> int main() { int num = 6.5; // Implicit type conversion std::cout << num << std::endl; }
I eksempelet blir 6.5, et flyttall, implisitt konvertert til int (som gjøres ved å fjerne desimaldelen).
Implisitt typekonvertering skjer når typen til en variabel ikke samsvarer med typen kompilatoren forventer (for eksempel når vi tildeler en verdi til int, forventer kompilatoren et heltall, og den vil utføre en typekonvertering hvis den mottar noe annet).
- Røde piler indikerer datatap. For eksempel, hvis vi konverterer
floattillong(ellerint), vil desimaldelen gå tapt; - Grønne piler indikerer ingen datatap. For eksempel kan vi trygt konvertere
inttillong, og resultatet blir det samme; - Gul pil ved konvertering fra
long(ellerint) tilfloat(ellerlong) betyr at det noen ganger kan oppstå datatap på grunn av utilstrekkelig presisjon ifloat(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 annet eksempel på implisitt typekonvertering er operasjonene +, -, *, /. Disse bør utføres på variabler med samme datatyper. Hvis dette ikke er tilfelle, vil C++ automatisk utføre typepromotering. For eksempel, int / double -> double / double.
Et annet eksempel hvor du kan møte implisitt typekonvertering er betingelser. For eksempel, if-setningen.
Den forventer at betingelsen er av typen bool. Men takket være implisitt typekonvertering kan vi bruke andre datatyper som betingelser. Her er et bilde som viser hvordan de konverteres til bool:
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår