Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Implisitt Typekonvertering | Andre Datatyper og Konsepter
C++ Datatyper

bookImplisitt 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

main.cpp

copy
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 float til long (eller int), vil desimaldelen gå tapt;
  • Grønne piler indikerer ingen datatap. For eksempel kan vi trygt konvertere int til long, og resultatet blir det samme;
  • Gul pil ved konvertering fra long (eller int) til float (eller long) betyr at det noen ganger kan oppstå datatap på grunn av utilstrekkelig presisjon i float (eller long).
main.cpp

main.cpp

copy
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:

question mark

Hvilken av følgende tilordninger kan føre til datatap på grunn av implisitt typekonvertering i C++?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 4. Kapittel 6
some-alt