TypeCasting i C: Implicit, eksplicit med eksempel

Indholdsfortegnelse:

Anonim

Hvad er typecasting i C?

Typecasting konverterer en datatype til en anden. Det kaldes også som datakonvertering eller typekonvertering. Det er et af de vigtige begreber, der introduceres i 'C' programmering.

'C' programmering giver to typer type casting operationer:

  1. Implicit type casting
  2. Eksplicit type støbning

Implicit type casting

Implicit type casting betyder konvertering af datatyper uden at miste sin oprindelige betydning. Denne type typecasting er vigtig, når du vil ændre datatyper uden at ændre betydningen af ​​de værdier, der er gemt inde i variablen.

Implicit type konvertering sker automatisk, når en værdi kopieres til dens kompatible datatype. Under konvertering anvendes strenge regler for typekonvertering. Hvis operanderne har to forskellige datatyper, konverteres en operand med lavere datatype automatisk til en højere datatype. Denne type typekonvertering kan ses i det følgende eksempel.

#includeint main(){short a=10; //initializing variable of short data typeint b; //declaring int variableb=a; //implicit type castingprintf("%d\n",a);printf("%d\n",b);} 

Produktion

1010

  1. I det givne eksempel har vi deklareret en variabel af kort datatype med værdi initialiseret som 10.
  2. På anden linje har vi deklareret en variabel af en int-datatype.
  3. På den tredje linje har vi tildelt værdien af ​​variablen s til variablen a. På tredje linje udføres implicit type konvertering, når værdien fra variabel s, der er af kort datatype, kopieres til variablen a, som er af en int-datatype.

Konvertering af tegn til Int

Overvej eksemplet med at tilføje et tegn, der er afkodet i ASCII med et heltal:

#include main() {int number = 1;char character = 'k'; /*ASCII value is 107 */int sum;sum = number + character;printf("Value of sum : %d\n", sum );} 

Produktion:

 Value of sum : 108

Her har kompilatoren foretaget et heltalskampagne ved at konvertere værdien af ​​'k' til ASCII, før den faktiske tilføjelsesoperation udføres.

Hierarki for aritmetisk konvertering

Compileren fortsætter først med at promovere et tegn til et heltal. Hvis operanderne stadig har forskellige datatyper, konverteres de til den højeste datatype, der vises i følgende hierarkidiagram:

Overvej følgende eksempel for at forstå konceptet:

#include main() {int num = 13;char c = 'k'; /* ASCII value is 107 */float sum;sum = num + c;printf("sum = %f\n", sum );} 

Produktion:

 sum = 120.000000 

Først og fremmest bliver c-variablen konverteret til heltal, men compileren konverterer num og c til "float" og tilføjer dem for at producere et "float" -resultat.

Vigtige punkter om implicitte konverteringer

  • Implicit type konvertering af typen kaldes også standardkonvertering. Vi kræver ikke nogen søgeord eller specielle udsagn i implicit type casting.
  • Konvertering fra mindre datatype til større datatype kaldes også som type promotion . I eksemplet ovenfor kan vi også sige, at værdien af ​​s fremmes til at skrive heltal.
  • Den implicitte typekonvertering sker altid med de kompatible datatyper.

Vi kan ikke udføre implicit type casting på datatyperne, som ikke er kompatible med hinanden, såsom:

  1. Konvertering af float til en int vil afkorte brøkdelen og dermed miste værdien af ​​værdien.
  2. Konvertering af dobbelt til flydende afrunder cifrene.
  3. Konvertering af lang int til int vil medføre fald i overskydende bit af høj ordre.

I alle ovennævnte tilfælde mister værdien sin betydning, når vi konverterer datatyperne. Generelt advares kompilatoren om tab af betydning af værdien.

'C' programmering giver en anden måde til typecasting, som er eksplicit type casting.

Eksplicit type støbning

I implicit type konvertering konverteres datatypen automatisk. Der er nogle scenarier, hvor vi muligvis bliver nødt til at tvinge typekonvertering. Antag, at vi har en variabel div, der lagrer delingen af ​​to operander, der erklæres som en int-datatype.

 int result, var1=10, var2=3;result=var1/var2;

I dette tilfælde vil resultatet, der er gemt i variablen "resultat", efter delingen udført på variabler var1 og var2, være i et heltalformat. Når dette sker, mister værdien, der er gemt i variablen "resultat", sin betydning, fordi den ikke betragter den brøkdel, der normalt opnås i delingen af ​​to tal.

For at tvinge typekonvertering i sådanne situationer bruger vi eksplicit type casting.

Det kræver en type støbningsoperatør. Den generelle syntaks for typegodsoperationer er som følger:

(type-name) expression

Her,

  • Typenavnet er standarddatatypen 'C'.
  • Et udtryk kan være et konstant, en variabel eller et faktisk udtryk.

Lad os skrive et program for at demonstrere implementering af eksplicit type-casting i 'C'.

#includeint main(){float a = 1.2;//int b = a; //Compiler will throw an error for thisint b = (int)a + 1;printf("Value of a is %f\n", a);printf("Value of b is %d\n",b);return 0;}

Produktion:

Value of a is 1.200000Value of b is 2

  1. Vi har initialiseret en variabel 'a' af typen float.
  2. Dernæst har vi en anden variabel 'b' af heltal datatype. Da variablen 'a' og 'b' har forskellige datatyper, tillader 'C' ikke brugen af ​​et sådant udtryk, og det vil medføre en fejl. I nogle versioner af 'C' vil udtrykket blive evalueret, men resultatet ønskes ikke.
  3. For at undgå sådanne situationer har vi typecast variablen 'a' af typen float. Ved at bruge eksplicit type casting-metoder har vi med succes konverteret float til datatype heltal.
  4. Vi har trykt værdi på 'a', som stadig er en float
  5. Efter typecasting vil resultatet altid være et heltal 'b'.

På denne måde kan vi implementere eksplicit type casting i 'C' programmering.

Resumé

  • Typecasting kaldes også som typekonvertering
  • Det betyder at konvertere en datatype til en anden.
  • Konvertering af mindre datatype til en større kaldes også som type promotion.
  • 'C' giver en implicit og eksplicit måde til typekonvertering.
  • Implicit type konvertering fungerer automatisk, når den kompatible datatype findes.
  • Eksplicit type konvertering kræver en type casting operator.

Husk følgende regler for programmeringspraksis, når du beskæftiger dig med forskellige datatyper for at forhindre tab af data:

  • Heltalstyper skal konverteres til float.
  • Flydetyper skal konverteres til dobbelt.
  • Tegntyper skal konverteres til heltal.