Ebben a témában az egyik adattípus másikká konvertálását tárgyaljuk C++ programozási nyelven. A típuskonverzió az a folyamat, amely egy változó előre meghatározott adattípusát megfelelő adattípussá alakítja. A típuskonverzió mögött meghúzódó fő gondolat az, hogy két különböző adattípus-változót egyetlen adattípussá alakítsanak át, így könnyen, adatvesztés nélkül megoldhatók a matematikai és logikai kifejezések.
Például két számot adunk össze, ahol az egyik változó int, a másik pedig float típusú; Az int változót float alakba kell konvertálnunk vagy begépelnünk, hogy mindkettő float adattípus legyen a hozzáadáshoz.
A típuskonverzió kétféleképpen történhet C++-ban, az egyik az implicit típuskonverzió , a második pedig az explicit típuskonverzió . Ezeket az átalakításokat maga a fordító végzi el, ezt implicit típus- vagy automatikus típuskonverziónak nevezik. Az átalakítás, amelyet a felhasználó hajt végre, vagy felhasználói beavatkozást igényel, amelyet explicit vagy felhasználó által meghatározott típusú konverziónak neveznek. Beszéljük meg az implicit és explicit típuskonverziót C++-ban.
Implicit típuskonverzió
Az implicit típuskonverzió az az átalakítás, amelyet a fordító minden emberi erőfeszítés nélkül automatikusan végrehajt. Ez azt jelenti, hogy egy implicit konverzió automatikusan konvertálja az egyik adattípust egy másik típusba a C++ fordító néhány előre meghatározott szabálya alapján. Ezért más néven a automatikus típusátalakítás .
Például:
int x = 20; short int y = 5; int z = x + y;
A fenti példában két különböző adattípus-változó található, az x és az y, ahol az x egy int típus, az y pedig egy rövid int adattípus. És az eredő z változó is egy egész típusú, amely x és y változókat tárol. De a C++ fordító automatikusan átalakítja az alacsonyabb rangú adattípust (rövid int) magasabb típusúvá (int), mielőtt két szám összegét eredményezné. Így elkerülhető az adatvesztés, túlcsordulás vagy előjelvesztés a C++ implicit típuskonverziójában.
A típusadás sorrendje implicit konverzióban
A következő az adattípusok helyes sorrendje az alacsonyabb rangtól a magasabbig:
bool -> char -> short int -> int -> unsigned int -> long int -> unsigned long int -> long long int -> float -> double -> long double
Program int lebegő típussá konvertálására implicit típuskonverzió segítségével
Hozzunk létre egy programot, amely a kisebb rangú adattípusokat magasabb típusokká konvertálja implicit típuskonverzió segítségével.
Program1.cpp
#include using namespace std; int main () { // assign the integer value int num1 = 25; // declare a float variable float num2; // convert int value into float variable using implicit conversion num2 = num1; cout << ' The value of num1 is: ' << num1 << endl; cout << ' The value of num2 is: ' << num2 << endl; return 0; }
Kimenet
The value of num1 is: 25 The value of num2 is: 25
Dupla int adattípussá konvertáló program implicit típuskonverzió segítségével
Hozzunk létre egy programot, amely implicit típuskonverzióval konvertálja a magasabb adattípust alacsonyabb típusúvá.
Program2.cpp
#include using namespace std; int main() { int num; // declare int type variable double num2 = 15.25; // declare and assign the double variable // use implicit type conversion to assign a double value to int variable num = num2; cout << ' The value of the int variable is: ' << num << endl; cout << ' The value of the double variable is: ' << num2 << endl; return 0; }
Kimenet
The value of the int variable is: 15 The value of the double variable is: 15.25
A fenti programban a num-t egész számként, a num2-t pedig kettős adattípusú változóként deklaráltuk, majd a num2-t 15,25-ként rendeltük hozzá. Ezt követően a hozzárendelési operátor segítségével a num változóhoz szám2 értéket rendelünk. Tehát egy C++ fordító automatikusan egész típusra konvertálja a dupla adatértéket, mielőtt hozzárendelné a num változóhoz, és a csonkolt értéket 15-ként nyomtatja ki.
Explicit típuskonverzió
Konverziók, amelyek megkövetelik felhasználói beavatkozás az egyik változó adattípusának megváltoztatásához a másikra, az úgynevezett explicit típuskonverzió . Más szavakkal, az explicit konverzió lehetővé teszi a programozó számára, hogy manuálisan módosítsa vagy típusosítsa az adattípust egyik változóról a másikra. Ezért más néven typecasting. Általában az explicit típuskonverziót kényszerítjük az adatok egyik típusból a másikba való konvertálására, mert nem követi az implicit konverziós szabályt.
Az explicit típuskonverzió kétféleképpen oszlik meg:
- Explicit átalakítás a cast operátor használatával
- Explicit átalakítás a hozzárendelési operátor használatával
Program a lebegőértékek int típusra konvertálására a cast operátor segítségével
Szereplő operátor: A C++ nyelvben a cast operátor egy unáris operátor, amely erőszakkal átalakítja az egyik típust egy másik típusba.
Tekintsünk egy példát a lebegő adattípus int típussá konvertálására az explicit konverzió cast operátorával C++ nyelven.
Program3.cpp
#include using namespace std; int main () { float f2 = 6.7; // use cast operator to convert data from one type to another int x = static_cast (f2); cout << ' The value of x is: ' << x; return 0; }
Kimenet
The value of x is: 6
Program az egyik adattípus másikká konvertálására a hozzárendelési operátor segítségével
Tekintsünk egy példát az egyik változó adattípusának konvertálására a C++ program hozzárendelési operátorával.
Program4.cpp
#include using namespace std; int main () { // declare a float variable float num2; // initialize an int variable int num1 = 25; // convert data type from int to float num2 = (float) num1; cout << ' The value of int num1 is: ' << num1 << endl; cout << ' The value of float num2 is: ' << num2 << endl; return 0; }
Kimenet
The value of int num1 is: 25 The value of float num2 is: 25.0