Articles

C-Type Casting

Annonser

Konvertering av en datatype til en annen er kjent som type casting eller, type-konvertering. For eksempel, hvis du vil lagre en ‘lang’ verdi i et enkelt heltall, kan du skrive cast ‘long’ til ‘int’. Du kan konvertere verdiene fra en type til en annen eksplisitt ved hjelp av cast −operatoren som følger-

(type_name) expression

Tenk på følgende eksempel hvor cast −operatoren forårsaker at delingen av en heltallvariabel av en annen skal utføres som en flyttallsoperasjon −

#include <stdio.h>main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean );}

når koden ovenfor er kompilert og utført, gir den følgende resultat –

Value of mean : 3.400000

det skal bemerkes her at cast-operatøren har forrang over divisjon, så verdien av sum blir først konvertert til Type Double og til slutt blir det dividert med telling som gir en dobbel verdi.

Type konverteringer kan være implisitt som utføres av kompilatoren automatisk, eller det kan spesifiseres eksplisitt gjennom bruk av cast operatør. Det regnes som god programmering praksis å bruke cast operatør når type konverteringer er nødvendig.

Heltall Forfremmelse

Heltall forfremmelse er prosessen der verdier av heltall type «mindre» enn int eller usignert int konverteres enten til int eller usignert int. Tenk på et eksempel på å legge til et tegn med et heltall −

#include <stdio.h>main() { int i = 17; char c = 'c'; /* ascii value is 99 */ int sum; sum = i + c; printf("Value of sum : %d\n", sum );}

når koden ovenfor er kompilert og utført, produserer den følgende resultat –

Value of sum : 116

her er verdien av sum 116 Fordi kompilatoren gjør heltall forfremmelse og konverterer verdien av ‘c’ TIL ASCII før du utfører den faktiske tilleggsoperasjonen.

Vanlig Aritmetisk Konvertering

de vanlige aritmetiske konverteringene utføres implisitt for å kaste verdiene til en vanlig type. Kompilatoren utfører først heltall forfremmelse; hvis operandene fortsatt har forskjellige typer, konverteres de til den typen som vises høyest i følgende hierarki-

de vanlige aritmetiske konverteringene utføres ikke for oppdragsoperatørene, heller ikke for de logiske operatorene && og//. La oss ta følgende eksempel for å forstå konseptet −

#include <stdio.h>main() { int i = 17; char c = 'c'; /* ascii value is 99 */ float sum; sum = i + c; printf("Value of sum : %f\n", sum );}

når koden ovenfor er kompilert og utført, produserer den følgende resultat −

Value of sum : 116.000000

her er det enkelt å forstå at første c blir konvertert til heltall, men som den endelige verdien er dobbel, gjelder vanlig aritmetisk konvertering og kompilatoren konverterer i og c til ‘float’ og legger til dem gir en ‘flyte’ resultat.