En type cast er dybest set en konvertering fra en type til en anden. Der er to typer typekonvertering:
- Implicit typekonvertering Også kendt som 'automatisk typekonvertering'.
- Udført af compileren alene uden nogen ekstern trigger fra brugeren.
- Finder normalt sted, når der i et udtryk er mere end én datatype til stede. I en sådan tilstand finder typekonvertering (typepromovering) sted for at undgå tab af data.
- Alle variablernes datatyper opgraderes til datatypen for variablen med den største datatype.
bool ->char -> short int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double>
- Det er muligt for implicitte konverteringer at miste information, tegn kan gå tabt (når fortegn konverteres implicit til usigneret), og overløb kan forekomme (når long long implicit konverteres til float).
- Konvertering efter opgave: Dette gøres ved eksplicit at definere den påkrævede type foran udtrykket i parentes. Dette kan også betragtes som en kraftfuld casting.
Syntaks:
(type) expression>
hvor type angiver den datatype, som det endelige resultat konverteres til.
Eksempel:
// 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;>}>hvordan man ændrer streng til int
>
>
Produktion:Sum = 2>
- Konvertering ved hjælp af Cast-operator: En Cast-operatør er en unær operatør hvilket tvinger én datatype til at blive konverteret til en anden datatype.
C++ understøtter fire typer støbning:- Statisk cast
- Dynamisk cast
- Const Cast
- Genfortolke Cast
Eksempel:
#include>using>namespace>std;>int>main()>{>>float>f = 3.5;>>>// using cast operator>>int>b =>static_cast><>int>>(f);>>>cout << b;>}>>
javac genkendes ikke
>
Produktion:3>
Eksempel på type implicit konvertering:
java og swing
// 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 = 108>Eksplicit typekonvertering: Denne proces kaldes også typestøbning, og den er brugerdefineret. Her kan brugeren typecaste resultatet for at gøre det til en bestemt datatype.
I C++ kan det gøres på to måder:
Fordele ved typekonvertering:
- Dette gøres for at drage fordel af visse funktioner i typehierarkier eller typerepræsentationer.
- Det hjælper med at beregne udtryk, der indeholder variabler af forskellige datatyper.