Denne delen vil diskutere type casting av variablene i programmeringsspråket C++. Typecasting refererer til konvertering av en datatype til en annen i et program. Typecasting kan gjøres på to måter: automatisk av kompilatoren og manuelt av programmereren eller brukeren. Typestøping er også kjent som Typekonvertering.
Anta for eksempel at de gitte dataene er en heltallstype, og vi ønsker å konvertere den til flytetype. Så vi må manuelt kaste int-data til float-typen, og denne typen casting kalles Type Casting i C++.
int num = 5; float x; x = float(num); x = 5.0
2ndeksempel:
float num = 5.25; int x; x = int(num); Output: 5
Typecasting er delt inn i to typer: implisitt konvertering eller implisitt typecasting og eksplisitt typekonvertering eller eksplisitt typecasting.
heltall til streng java
Implisitt typecasting eller implisitt typekonvertering
- Det er kjent som den automatiske typen støping.
- Den konverteres automatisk fra en datatype til en annen uten noen ekstern intervensjon som programmerer eller bruker. Det betyr at kompilatoren automatisk konverterer en datatype til en annen.
- Alle datatyper oppgraderes automatisk til den største typen uten å miste informasjon.
- Det kan bare gjelde i et program hvis begge variablene er kompatible med hverandre.
char - sort int -> int -> unsigned int -> long int -> float -> double -> long double, etc.
Merk: Implisitt typecasting bør gjøres fra lave til høyere datatyper. Ellers påvirker det den grunnleggende datatypen, som kan miste presisjon eller data, og kompilatoren kan vise en advarsel om dette.
Program for å bruke den implisitte typen casting i C++
La oss lage et eksempel for å demonstrere casting av en variabel til en annen ved å bruke den implisitte typen casting i C++.
#include using namespace std; int main () { short x = 200; int y; y = x; cout << ' Implicit Type Casting ' << endl; cout << ' The value of x: ' << x << endl; cout << ' The value of y: ' << y << endl; int num = 20; char ch = 'a'; int res = 20 + 'a'; cout << ' Type casting char to int data type ('a' to 20): ' << res << endl; float val = num + 'A'; cout << ' Type casting from int data to float type: ' << val << endl; return 0; }
Produksjon:
Implicit Type Casting The value of x: 200 The value of y: 200 Type casting char to int data type ('a' to 20): 117 Type casting from int data to float type: 85
I programmet ovenfor erklærte vi en kort datatypevariabel x er 200 og en heltallsvariabel y. Etter det tildeler vi x-verdien til y, og deretter konverterer kompilatoren automatisk kort dataverdi x til y, som returnerer y er 200.
I de neste uttrykkene erklærte vi at en int-typevariabel num er 20, og tegntypevariabelen ch er 'a', som tilsvarer en heltallsverdi på 97. Og så legger vi til disse to variablene for å utføre den implisitte konverteringen, som returnerer resultatet av uttrykket er 117.
Tilsvarende, i det tredje uttrykket, legger vi til heltallsvariabelen num er 20, og tegnvariabelen ch er 65, og tilordner deretter resultatet til flytvariabelen val. Dermed blir resultatet av uttrykket automatisk konvertert til float-typen av kompilatoren.
Eksplisitt type casting eller eksplisitt type konvertering
- Det er også kjent som den manuelle typen casting i et program.
- Den castes manuelt av programmereren eller brukeren for å endre fra én datatype til en annen type i et program. Det betyr at en bruker enkelt kan caste en data til en annen i henhold til kravet i et program.
- Det krever ikke å sjekke kompatibiliteten til variablene.
- I denne castingen kan vi oppgradere eller nedgradere datatypen til en variabel til en annen i et program.
- Den bruker cast-operatoren () for å endre typen til en variabel.
Syntaks av den eksplisitte typen casting
(type) expression;
type: Den representerer de brukerdefinerte dataene som konverterer det gitte uttrykket.
uttrykk: Den representerer konstantverdien, variabelen eller et uttrykk hvis datatype er konvertert.
For eksempel har vi et flytende tall som er 4,534, og for å konvertere en heltallsverdi, setningen som:
int num; num = (int) 4.534; // cast into int data type cout << num;
Når setningene ovenfor utføres, vil flyttallsverdien bli kastet inn i en heltallsdatatype ved å bruke cast ()-operatoren. Og flyteverdien er tilordnet et heltall som avkorter desimaldelen og viser bare 4 som heltallsverdi.
Program for å demonstrere bruken av den eksplisitte typen casting i C++
La oss lage et enkelt program for å caste en type variabel til en annen type ved å bruke den eksplisitte typen casting i programmeringsspråket C++.
#include using namespace std; int main () { // declaration of the variables int a, b; float res; a = 21; b = 5; cout << ' Implicit Type Casting: ' << endl; cout << ' Result: ' << a / b << endl; // it loses some information cout << ' Explicit Type Casting: ' << endl; // use cast () operator to convert int data to float res = (float) 21 / 5; cout << ' The value of float variable (res): ' << res << endl; return 0; }
Produksjon:
Implicit Type Casting: Result: 4 Explicit Type Casting: The value of float variable (res): 4.2
I programmet ovenfor tar vi to heltallsvariabler, a og b, hvis verdier er 21 og 2. Og del deretter a med b (21/2) som returnerer en 4 int type verdi.
dfs algoritme
I det andre uttrykket erklærer vi en flyttypevariabel res som lagrer resultatene av a og b uten å miste data ved å bruke cast-operatoren i den eksplisitte type cast-metoden.
Program for å kaste doble data til int og float-type ved å bruke cast-operatoren
La oss vurdere et eksempel for å få arealet til rektangelet ved å kaste doble data inn i float og int type i C++ programmering.
#include using namespace std; int main () { // declaration of the variables double l, b; int area; // convert double data type to int type cout << ' The length of the rectangle is: ' <> l; cout << ' The breadth of the rectangle is: ' <> b; area = (int) l * b; // cast into int type cout << ' The area of the rectangle is: ' << area << endl; float res; // convert double data type to float type cout << ' The length of the rectangle is: ' << l << endl; cout << ' The breadth of the rectangle is: ' << b << endl; res = (float) l * b; // cast into float type cout << ' The area of the rectangle is: ' << res; return 0; }
Produksjon:
The length of the rectangle is: 57.3456 The breadth of the rectangle is: 12.9874 The area of the rectangle is: 740 The length of the rectangle is: 57.3456 The breadth of the rectangle is: 12.9874 The area of the rectangle is: 744.77
Noen forskjellige typer støping
I type cast er det en cast-operatør som tvinger en datatype til å bli konvertert til en annen datatype i henhold til programmets behov. C++ har fire forskjellige typer rollebesetningsoperatører:
- Static_cast
- dynamic_cast
- const_cast
- reinterpret_cast
Statisk rollebesetning:
Static_cast er en enkel kompileringstid som konverterer eller caster en datatype til en annen. Det betyr at den ikke sjekker datatypen under kjøring om kastet som utføres er gyldig eller ikke. Programmereren eller brukeren har derfor ansvaret for å sikre at konverteringen var sikker og gyldig.
Static_cast er dyktig nok til å utføre alle konverteringene som utføres av den implisitte casten. Og den utfører også konverteringene mellom pekere av klasser relatert til hverandre (oppkast - > fra avledet til basisklasse eller nedkast - > fra basis til avledet klasse).
Syntaks for den statiske rollebesetningen
static_cast (expression);
Program for å demonstrere bruken av Static Cast
La oss lage et enkelt eksempel for å bruke den statiske casten av typen casting i C++-programmering.
#include using namespace std; int main () { // declare a variable double l; l = 2.5 * 3.5 * 4.5; int tot; cout << ' Before using the static cast:' << endl; cout << ' The value of l = ' << l << endl; // use the static_cast to convert the data type tot = static_cast (l); cout << ' After using the static cast: ' << endl; cout << ' The value of tot = ' << tot << endl; return 0; }
Produksjon:
Before using the static cast: The value of l = 39.375 After using the static cast: The value of tot = 39
Dynamisk rollebesetning
Dynamic_cast er en kjøretidskastoperator som brukes til å utføre konvertering av en type variabel til en annen bare på klassepekere og referanser. Det betyr at den sjekker den gyldige castingen av variablene under kjøretiden, og hvis castingen mislykkes, returnerer den en NULL-verdi. Dynamisk støping er basert på RTTI (Runtime Type Identification) mekanisme.
Program for å demonstrere bruken av Dynamic Cast i C++
La oss lage et enkelt program for å utføre dynamic_cast i programmeringsspråket C++.
#include using namespace std; class parent { public: virtual void print() { } }; class derived: public parent { }; int main () { // create an object ptr parent *ptr = new derived; // use the dynamic cast to convert class data derived* d = dynamic_cast (ptr); // check whether the dynamic cast is performed or not if ( d != NULL) { cout << ' Dynamic casting is done successfully'; } else { cout << ' Dynamic casting is not done successfully'; } }
Produksjon:
Dynamic casting is done successfully.
Tolk Cast Type på nytt
Reinterpret_cast type casting brukes til å kaste en peker til en hvilken som helst annen type peker om den gitte pekeren tilhører hverandre eller ikke. Det betyr at den ikke sjekker om pekeren eller dataene pekeren viser til er de samme eller ikke. Og den kaster også en peker til en heltallstype eller omvendt.
Syntaks av typen reinterpret_cast
reinterpret_cast expression;
Program for å bruke Reinterpret Cast i C++
La oss skrive et program for å demonstrere konverteringen av en peker ved å bruke retolkingen i C++-språket.
#include using namespace std; int main () { // declaration of the pointer variables int *pt = new int (65); // use reinterpre_cast operator to type cast the pointer variables char *ch = reinterpret_cast (pt); cout << ' The value of pt: ' << pt << endl; cout << ' The value of ch: ' << ch << endl; // get value of the defined variable using pointer cout << ' The value of *ptr: ' << *pt << endl; cout << ' The value of *ch: ' << *ch << endl; return 0; }
Produksjon:
The value of pt: 0x5cfed0 The value of ch: A The value of *ptr: 65 The value of *ch: A
Konst Cast
Const_cast brukes til å endre eller manipulere const-oppførselen til kildepekeren. Det betyr at vi kan utføre const på to måter: sette en const-peker til en ikke-const-peker eller slette eller fjerne const fra en const-peker.
Syntaks av typen Const Cast
kart vs sett
const_cast exp;
Program for å bruke Const Cast i C++
La oss skrive et program for å kaste en kildepeker til en ikke-cast-peker ved å bruke const_cast i C++.
#include using namespace std; // define a function int disp(int *pt) { return (*pt * 10); } int main () { // declare a const variable const int num = 50; const int *pt = # // get the address of num // use const_cast to chnage the constness of the source pointer int *ptr = const_cast (pt); cout << ' The value of ptr cast: ' << disp(ptr); return 0; }
Produksjon:
The value of ptr cast: 500