Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Implicit Typomvandling | Andra Datatyper och Koncept
C++-Datatyper

bookImplicit 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

main.cpp

copy
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 float till long (eller int), förlorar vi decimaldelen;
  • Gröna pilar indikerar ingen dataförlust. Till exempel kan vi säkert konvertera int till long, och resultatet är detsamma;
  • Gul pil vid konvertering från long (eller int) till float (eller long) betyder att dataförlust ibland kan uppstå på grund av otillräcklig precision hos 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; }

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:

question mark

Vilken av följande tilldelningar kan resultera i dataförlust på grund av implicit typomvandling i C++?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 6

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 4. Kapitel 6
some-alt