Explicit Typkonvertering
Svep för att visa menyn
Om du arbetar med variabler av typen int, snarare än bara tal i koden, behöver du konvertera värdet av en variabel till double eller float. Detta kan göras med följande syntax:
main.cpp
12345678910#include <iostream> int main() { int num1 = 9; int num2 = 4; std::cout << "No conversion: " << num1 / num2 << std::endl; std::cout << "With conversion: " << (double)num1 / num2 << std::endl; }
Det finns flera sätt att uttryckligen utföra typkonvertering. Detta kallas C-stil konvertering:
main.cpp
123456789101112#include <iostream> int main() { float num = 6.5; std::cout << (int)num << std::endl; // 6.5 to `int` is 6 std::cout << (bool)num << std::endl; // 6.5 to `bool` is true // Or std::cout << int(num) << std::endl; // 6.5 to `int` is 6 std::cout << bool(num) << std::endl; // 6.5 to `bool` is true }
Även om detta tillvägagångssätt är kortfattat, visar det inte tydligt avsikten eller typen av konvertering, vilket kan leda till oklarheter och potentiell felanvändning.
Det finns mer explicita och säkrare typomvandlingsoperatorer som ger bättre kontroll över typkonverteringar.
För det mesta behöver du endast en static_conversion. Vi kommer inte att gå in på andra typomvandlingar i detalj. Här är syntaxen:
main.cpp
12345678#include <iostream> int main() { float num = 6.5; std::cout << static_cast<int>(num) << std::endl; // 6.5 to `int` is 6 std::cout << static_cast<bool>(num) << std::endl; // 6.5 to `bool` is true }
Vi kommer inte att gå igenom skillnaderna mellan alla dessa. Generellt är static_cast att föredra eftersom det är mer restriktivt och kan förhindra oväntat beteende med komplexa datatyper.
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