Skriv Konvertering i C++
En typgjutning är i grunden en omvandling från en typ till en annan. Det finns två typer av typkonvertering:
- Implicit typkonvertering Även känd som 'automatisk typkonvertering'.
- Görs av kompilatorn på egen hand, utan någon extern trigger från användaren.
- Utspelar sig vanligtvis när det finns mer än en datatyp i ett uttryck. I ett sådant tillstånd sker typkonvertering (typpromotion) för att undvika förlust av data.
- Alla datatyper för variablerna uppgraderas till datatypen för variabeln med störst datatyp.
bool ->char -> kort int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double
- Det är möjligt för implicita omvandlingar att förlora information, tecken kan gå förlorade (när signerad konverteras implicit till osignerad) och spill kan inträffa (när long long implicit omvandlas till float).
- Konvertera efter uppdrag: Detta görs genom att uttryckligen definiera den önskade typen framför uttrycket inom parentes. Detta kan också betraktas som kraftfull gjutning.
Syntax:
(type) expression
var typ anger vilken datatyp som slutresultatet konverteras till.
Exempel:
// C++ program to demonstrate>// explicit type casting>>#include>using>namespace>std;>>int>main()>{>>double>x = 1.2;>>>// Explicit conversion from double to int>>int>sum = (>int>)x + 1;>>>cout < <>'Sum = '>< < sum;>>>return>0;>}>
Produktion:Sum = 2
- Konvertering med Cast-operator: En Cast-operatör är en unär operatör vilket tvingar en datatyp att konverteras till en annan datatyp.
C++ stöder fyra typer av gjutning:- Statisk gjutning
- Dynamisk cast
- Const Cast
- Omtolka Cast
Exempel:
#include>using>namespace>std;>int>main()>{>>float>f = 3.5;>>>// using cast operator>>int>b =>static_cast><>int>>(f);>>>cout < < b;>}>
Produktion:3
Exempel på typimplicit konvertering:
// An example of implicit conversion> > #include> using> namespace> std;> > int> main()> {> > int> x = 10;> // integer x> > char> y => 'a'> ;> // character c> > > // y implicitly converted to int. ASCII> > // value of 'a' is 97> > x = x + y;> > > // x is implicitly converted to float> > float> z = x + 1.0;> > > cout < <> 'x = '> < < x < < endl> > < <> 'y = '> < < y < < endl> > < <> 'z = '> < < z < < endl;> > > return> 0;> }> |
Produktion:
x = 107 y = a z = 108Explicit typkonvertering: Denna process kallas även typgjutning och den är användardefinierad. Här kan användaren typcasta resultatet för att göra det till en viss datatyp.
I C++ kan det göras på två sätt:
Fördelar med typkonvertering:
- Detta görs för att dra fördel av vissa egenskaper hos typhierarkier eller typrepresentationer.
- Det hjälper till att beräkna uttryck som innehåller variabler av olika datatyper.