Pretvorba tipa u C: pretvorba tipa, implicitno, eksplicitno s primjerom

Što je Typecasting u C-u?

Typecasting je pretvaranje jedne vrste podataka u drugu. Također se naziva pretvorba podataka ili pretvorba tipa u C jeziku. To je jedan od važnih koncepata uvedenih u 'C' programiranje.

'C' programiranje pruža dvije vrste operacija pretvaranja tipa:

  1. Implicitno pretvaranje tipa
  2. Eksplicitno lijevanje tipa

Implicitno pretvaranje tipa

Implicitno pretvaranje tipa znači pretvorbu tipova podataka bez gubitka izvornog značenja. Ova vrsta tipiziranja neophodna je kada želite promijeniti tipove podataka bez mijenjajući značaj vrijednosti pohranjenih unutar varijabla.

Implicitna pretvorba tipa u C događa se automatski kada se vrijednost kopira u svoj kompatibilni tip podataka. Tijekom konverzije primjenjuju se stroga pravila za konverziju tipa. Ako su operandi dva različita tipa podataka, tada se operand s nižim tipom podataka automatski pretvara u viši tip podataka. Ovaj tip pretvorbe tipa može se vidjeti u sljedećem primjeru.

#include<stdio.h>
int main(){
	short a=10; //initializing variable of short data type
	int b; //declaring int variable
	b=a; //implicit type casting
	printf("%d\n",a);
	printf("%d\n",b);
}

Izlaz:

10
10

Implicitno pretvaranje tipa

  1. U navedenom primjeru smo deklarirali varijablu kratkog tipa podataka s vrijednošću inicijaliziranom kao 10.
  2. U drugom retku smo deklarirali varijablu int tipa podataka.
  3. U trećem retku smo varijabli a dodijelili vrijednost varijable s. U trećem retku izvodi se implicitna konverzija tipa jer se vrijednost iz varijable s koja je tipa short kopira u varijablu a koja je tipa int.

Pretvaranje znaka u Int

Razmotrite primjer dodavanja znaka dekodiranog u ASCII s cijelim brojem:

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

Izlaz:

 Value of sum : 108

Ovdje je prevodilac napravio cjelobrojnu promociju pretvaranjem vrijednosti 'k' u ASCII prije izvođenja stvarne operacije zbrajanja.

Hijerarhija aritmetičke pretvorbe

Prevodilac prvo nastavlja s promicanjem znaka u cijeli broj. Ako operandi i dalje imaju različite vrste podataka, tada se pretvaraju u najvišu vrstu podataka koja se pojavljuje u sljedećem hijerarhijskom grafikonu:

Implicitno pretvaranje tipa
Hijerarhija aritmetičke pretvorbe

Razmotrite sljedeći primjer da biste razumjeli koncept:

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

Izlaz:

 sum = 120.000000

Prije svega, c varijabla se pretvara u cijeli broj, ali kompajler pretvara broj i c u "float" i dodaje ih da proizvede rezultat "float".

Važne točke o implicitnim konverzijama

  • Implicitna vrsta pretvorbe tipa također se naziva i standardna pretvorba tipa. Ne zahtijevamo nikakve ključne riječi ili posebne izjave u implicitnom pretvaranju tipa.
  • Pretvaranje iz manjeg tipa podataka u veći tip podataka također se naziva as promicanje tipa. U gornjem primjeru također možemo reći da je vrijednost s promaknuta u tip integer.
  • Implicitna konverzija tipa uvijek se događa s kompatibilnim tipovima podataka.

Ne možemo izvršiti implicitno pretvaranje tipa na tipove podataka koji nisu međusobno kompatibilni kao što su:

  1. Pretvaranje float u int će skratiti dio razlomka čime će se izgubiti značenje vrijednosti.
  2. Pretvaranjem double u float zaokružit ćete znamenke.
  3. Pretvaranje long int u int uzrokovat će ispuštanje viška bitova visokog reda.

U svim gore navedenim slučajevima, kada pretvorimo tipove podataka, vrijednost će izgubiti svoje značenje. Općenito, prevodilac upozorava na gubitak značenja vrijednosti.

'C' programiranje pruža još jedan način pretvaranja tipa koji je eksplicitno pretvaranje tipa.

Eksplicitno lijevanje tipa

U implicitnoj pretvorbi tipa, vrsta podataka se automatski pretvara. Postoje neki scenariji u kojima ćemo možda morati forsirati konverziju tipa. Pretpostavimo da imamo varijablu div koja pohranjuje dijeljenje dvaju operanda koji su deklarirani kao int tip podataka.

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

U ovom slučaju, nakon dijeljenja izvršenog na varijablama var1 i var2, rezultat pohranjen u varijabli "rezultat" bit će u obliku cijelog broja. Kad god se to dogodi, vrijednost pohranjena u varijabli "rezultat" gubi svoje značenje jer ne uzima u obzir razlomak koji se inače dobiva dijeljenjem dvaju brojeva.

Da bismo prisilili pretvorbu tipa u takvim situacijama, koristimo eksplicitno pretvaranje tipa.

Zahtijeva operatora za pretvaranje tipa. Opća sintaksa za operacije pretvaranja tipa je sljedeća:

(type-name) expression

Ovdje,

  • Naziv tipa je standardni tip podataka jezika 'C'.
  • Izraz može biti konstanta, varijabla ili stvarni izraz.

Napišimo program koji će pokazati kako tipizirati u C s eksplicitnim tipiziranjem.

#include<stdio.h>
int main()
{
	float a = 1.2;
	//int b  = a; //Compiler will throw an error for this
	int b = (int)a + 1;
	printf("Value of a is %f\n", a);
	printf("Value of b is %d\n",b);
	return 0;
}

Izlaz:

Value of a is 1.200000
Value of b is 2

Eksplicitno lijevanje tipa

  1. Inicijalizirali smo varijablu 'a' tipa float.
  2. Zatim, imamo još jednu varijablu 'b' integer tipa podataka. Budući da su varijable 'a' i 'b' različitih tipova podataka, 'C' neće dopustiti korištenje takvog izraza i javit će pogrešku. U nekim verzijama 'C', izraz će biti procijenjen, ali rezultat neće biti željen.
  3. Kako bismo izbjegli takve situacije, tipizirali smo varijablu 'a' tipa float. Korištenjem eksplicitnih metoda pretvaranja tipa, uspješno smo pretvorili float u podatkovni tip integer.
  4. Ispisali smo vrijednost 'a' koja je još uvijek float
  5. Nakon tipiziranja, rezultat će uvijek biti cijeli broj 'b.'

Na ovaj način možemo implementirati eksplicitno pretvaranje tipa u C programiranje.

Rezime

  • Typecasting se također naziva konverzijom tipa
  • To znači pretvaranje jedne vrste podataka u drugu.
  • Pretvaranje manjeg tipa podataka u veći naziva se i promocija tipa.
  • Postoje dvije vrste konverzije tipa: implicitna i eksplicitna konverzija tipa u C-u.
  • Implicitna pretvorba tipa radi automatski kada se pronađe kompatibilni tip podataka.
  • Eksplicitna konverzija tipa zahtijeva operator pretvaranja tipa.

Imajte na umu sljedeća pravila za praksu programiranja kada radite s različitim vrstama podataka kako biste spriječili gubitak podataka:

  • Vrste cijelih brojeva treba pretvoriti u float.
  • Tipovi float trebaju se pretvoriti u double.
  • Vrste znakova treba pretvoriti u cijeli broj.

Sažmite ovu objavu uz: