TypeCasting C: netieši, precīzi ar piemēru

Satura rādītājs:

Anonim

Kas ir tipogrāfija C?

Rakstīšanas veids ir viena datu veida pārveidošana citā. To sauc arī par datu pārveidošanu vai tipa pārveidošanu. Tas ir viens no svarīgākajiem jēdzieniem, kas ieviests “C” programmēšanā.

“C” programmēšana nodrošina divu veidu tipu liešanu:

  1. Netiešā tipa liešana
  2. Nepārprotama veida liešana

Netiešā tipa liešana

Netiešo tipu apraide nozīmē datu tipu pārveidošanu, nezaudējot sākotnējo nozīmi. Šāda veida rakstīšana ir būtiska, ja vēlaties mainīt datu tipus , nemainot mainīgā iekšienē saglabāto vērtību nozīmīgumu.

Netiešā tipa konvertēšana notiek automātiski, kad vērtība tiek kopēta uz tā saderīgo datu tipu. Pārveidošanas laikā tiek piemēroti stingri tipa pārveidošanas noteikumi. Ja operandiem ir divi dažādi datu tipi, tad operands ar zemāku datu tipu tiek automātiski pārveidots par augstāku datu tipu. Šāda veida veida pārveidošanu var redzēt nākamajā piemērā.

#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);} 

Rezultāts

1010

  1. Šajā piemērā mēs esam deklarējuši īsu datu tipa mainīgo ar vērtību, kas inicializēta kā 10.
  2. Otrajā rindā mēs esam deklarējuši int datu tipa mainīgo.
  3. Trešajā rindā mēs esam piešķīruši mainīgā s vērtību mainīgajam a. Trešajā rindā netiešā tipa konvertēšana tiek veikta, kad mainīgā s vērtība, kurai ir īss datu tips, tiek iekopēta mainīgajā a, kas ir int datu tips.

Rakstzīmes konvertēšana uz Int

Apsveriet piemēru, kā pievienot ciparu, kas dekodēts ASCII ar veselu skaitli:

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

Izeja:

 Value of sum : 108

Šeit kompilators ir veicis veselu skaitli, pārvēršot “k” vērtību uz ASCII pirms faktiskās pievienošanas darbības veikšanas.

Aritmētiskās konversijas hierarhija

Sastādītājs vispirms turpina rakstzīmes paaugstināšanu par veselu skaitli. Ja operandiem joprojām ir dažādi datu tipi, tie tiek pārvērsti par augstāko datu tipu, kas parādīts šajā hierarhijas diagrammā:

Apsveriet šo piemēru, lai saprastu jēdzienu:

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

Izeja:

 sum = 120.000000 

Pirmkārt, c mainīgais tiek pārvērsts par veselu skaitli, bet kompilators pārvērš skaitļus un c par "float" un tos pievieno, lai iegūtu "float" rezultātu.

Svarīgi punkti par netiešajiem reklāmguvumiem

  • Netiešo tipa pārveidošanas veidu sauc arī par standarta tipa pārveidošanu. Netiešo tipu liešanā mums nav nepieciešami atslēgvārdi vai īpaši paziņojumi.
  • Konvertēšana no mazāka veida datu uz lielāku datu tipu tiek saukta arī par veida veicināšanu . Iepriekš minētajā piemērā mēs varam arī teikt, ka s vērtība tiek paaugstināta, lai ierakstītu veselu skaitli.
  • Netiešā tipa pārveidošana vienmēr notiek ar saderīgiem datu tipiem.

Mēs nevaram veikt netiešu tipu liešanu datu tipiem, kas nav savietojami, piemēram:

  1. Pārvēršot pludiņu par int, tiks saīsināta frakcijas daļa, tādējādi zaudējot vērtības nozīmi.
  2. Konvertējot dubultu uz peldošu, cipari tiks noapaļoti uz augšu.
  3. Pārvēršot garo int uz int, radīsies lieko augstas kārtas bitu nomešana.

Visos iepriekš minētajos gadījumos, pārveidojot datu tipus, vērtība zaudēs savu nozīmi. Parasti sastādītājs brīdina par vērtības nozīmes zudumu.

“C” programmēšana nodrošina vēl vienu veidu, kā veikt tiešo rakstīšanu, kas ir skaidra tipa liešana.

Nepārprotama veida liešana

Netiešā tipa konvertēšanas gadījumā datu tips tiek konvertēts automātiski. Ir daži scenāriji, kuros mums, iespējams, būs jāpiespiež tipa pārveidošana. Pieņemsim, ka mums ir mainīgais div, kas glabā divu operandu sadalījumu, kuri ir deklarēti kā int datu tips.

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

Šajā gadījumā pēc dalījuma, kas veikts ar mainīgajiem var1 un var2, mainīgajā "rezultāts" saglabātais rezultāts būs vesela skaitļa formātā. Ikreiz, kad tas notiek, mainīgajā "rezultāts" saglabātā vērtība zaudē savu nozīmi, jo tajā netiek ņemta vērā frakcijas daļa, kas parasti tiek iegūta divu skaitļu dalījumā.

Lai šādās situācijās piespiestu tipa pārveidošanu, mēs izmantojam skaidru tipa liešanu.

Tam nepieciešams tipa liešanas operators. Tipa liešanas darbību vispārējā sintakse ir šāda:

(type-name) expression

Šeit,

  • Tipa nosaukums ir standarta C valodas datu tips.
  • Izteiksme var būt konstante, mainīgais vai faktiskā izteiksme.

Uzrakstīsim programmu, lai parādītu skaidras tipa liešanas ieviešanu “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;}

Izeja:

Value of a is 1.200000Value of b is 2

  1. Mēs esam inicializējuši mainīgo “a” tipa pludiņu.
  2. Pēc tam mums ir vēl viens vesela skaitļa datu tipa mainīgais “b”. Tā kā mainīgajiem “a” un “b” ir dažāda veida dati, “C” neļaus izmantot šādu izteiksmi un radīs kļūdu. Dažās “C” versijās izteiksme tiks novērtēta, bet rezultāts nebūs vēlams.
  3. Lai izvairītos no šādām situācijām, mums ir tipa mainīgais “a” tipa pludiņš. Izmantojot skaidra tipa apraides metodes, mēs veiksmīgi pārveidojām pludiņu par datu tipa veselu skaitli.
  4. Mums ir iespiesta “a” vērtība, kas joprojām ir pludiņš
  5. Pēc teksta uzrakstīšanas rezultāts vienmēr būs vesels skaitlis “b”.

Tādā veidā mēs varam ieviest skaidru tipa liešanu “C” programmēšanā.

Kopsavilkums

  • Veidlapu rakstīšanu sauc arī par tipa pārveidošanu
  • Tas nozīmē viena datu veida pārveidošanu citā.
  • Mazāka veida datu konvertēšana lielākos tiek saukta arī par tipa veicināšanu.
  • “C” nodrošina netiešu un nepārprotamu veida pārveidošanu.
  • Netiešā tipa konvertēšana darbojas automātiski, kad tiek atrasts saderīgs datu tips.
  • Nepārprotama tipa pārveidošanai nepieciešams tipa apraides operators.

Strādājot ar dažādiem datu tipiem, lai novērstu datu zudumu, ņemiet vērā šādus noteikumus.

  • Veseli skaitļi jāpārvērš par pludiņiem.
  • Peldošie veidi jāpārvērš divkāršos.
  • Rakstzīmju veidi jāpārvērš par veselu skaitli.