„TypeCasting“ C: numanoma, aiški su pavyzdžiu

Kas yra tipografija C?

Rašto rinkimas yra vieno duomenų tipo pavertimas kitu. Jis taip pat vadinamas duomenų konversija arba tipo konversija. Tai yra viena iš svarbiausių „C“ programavimo sąvokų.

„C“ programavimas suteikia dviejų tipų liejimo operacijų tipus:

  1. Numanomas tipo liejimas
  2. Aiškus tipo liejimas

Numanomas tipo liejimas

Numanomas tipų perdavimas reiškia duomenų tipų konvertavimą, neprarandant pradinės prasmės. Šis tipo rašymas yra būtinas, kai norite pakeisti duomenų tipus , nekeisdami kintamajame saugomų reikšmių reikšmingumo.

Numanomas tipo konvertavimas įvyksta automatiškai, kai vertė nukopijuojama į suderinamą duomenų tipą. Konvertavimo metu taikomos griežtos tipo keitimo taisyklės. Jei operandai yra dviejų skirtingų duomenų tipų, tada operandas, turintis mažesnį duomenų tipą, automatiškai konvertuojamas į aukštesnį duomenų tipą. Tokio tipo konversiją galima pamatyti šiame pavyzdyje.

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

Rezultatas

1010

  1. Pateiktame pavyzdyje mes paskelbėme trumpų duomenų tipo kintamąjį, kurio vertė inicijuota kaip 10.
  2. Antroje eilutėje mes paskelbėme int duomenų tipo kintamąjį.
  3. Trečioje eilutėje priskyrėme kintamojo s reikšmę kintamajam a. Trečioje eilutėje atliekamas numanomas tipo konversija, kai iš kintamojo s, kuris yra trumpas duomenų tipas, vertė nukopijuojama į kintamąjį a, kuris yra int duomenų tipo.

Perskaičiuojamas simbolis į vid

Apsvarstykite ASCII dekoduoto simbolio pridėjimo sveikuoju pavyzdžiu pavyzdį:

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

Išvestis:

 Value of sum : 108

Čia kompiliatorius atliko sveiko skaičiaus reklamą, prieš atlikdamas faktinę pridėjimo operaciją, konvertuodamas „k“ reikšmę į ASCII.

Aritmetinės konversijos hierarchija

Kompiliatorius pirmiausia reklamuoja simbolį iki sveiko skaičiaus. Jei operandai vis dar turi skirtingus duomenų tipus, jie konvertuojami į aukščiausią duomenų tipą, rodomą šioje hierarchijos diagramoje:

Apsvarstykite šį pavyzdį, kad suprastumėte sąvoką:

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

Išvestis:

 sum = 120.000000 

Pirmiausia, C kintamasis bus perskaičiuoti į sveikojo skaičiaus, bet kompiliatorių konvertuoja NUM ir c į "float" ir prideda juos gaminti "float" rezultatą.

Svarbūs klausimai apie numanomas konversijas

  • Numanomas tipo konversijos tipas taip pat vadinamas standartinio tipo konversija. Netiesioginio tipo liejime nereikalaujama jokių raktinių žodžių ar specialių teiginių.
  • Konvertavimas iš mažesnio duomenų tipo į didesnį duomenų tipą taip pat vadinamas tipo reklama . Ankstesniame pavyzdyje mes taip pat galime pasakyti, kad s reikšmė yra paaukštinta iki sveikojo tipo.
  • Numanoma tipo konversija visada vyksta su suderinamais duomenų tipais.

Negalime atlikti numanomo tipo duomenų perdavimo tipų, kurie yra nesuderinami, pavyzdžiui:

  1. Konvertuojant plūdę į int, sutrumpinama trupmenos dalis, taigi prarandama vertės reikšmė.
  2. Konvertuojant dvigubą į plūduriuojančią, skaitmenys bus suapvalinti.
  3. Konvertuojant ilgą int į int, bus pertekliniai aukšto lygio bitai.

Visais aukščiau nurodytais atvejais, kai konvertuosime duomenų tipus, reikšmė neteks prasmės. Paprastai kompiliatorius įspėja apie vertės praradimą.

„C“ programavimas suteikia dar vieną tipavimo būdą, kuris yra aiškus tipo liejimas.

Aiškus tipo liejimas

Atliekant numanomą tipo konversiją, duomenų tipas konvertuojamas automatiškai. Yra keletas scenarijų, kai mums gali tekti priversti konvertuoti tipą. Tarkime, kad mes turime kintamąjį div, kuriame saugomas dviejų operandų, kurie deklaruojami kaip int duomenų tipas, padalijimas.

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

Šiuo atveju po kintamųjų var1 ir var2 padalijimo rezultatas, išsaugotas kintamajame „result“, bus sveiko skaičiaus formatas. Kai tai atsitiks, kintamajame „rezultatas“ saugoma reikšmė praranda prasmę, nes neatsižvelgiama į trupmenos dalį, kuri paprastai gaunama padalijus du skaičius.

Norėdami priversti konvertuoti tipus tokiose situacijose, naudojame aiškų tipo liejimą.

Tam reikia tipo liejimo operatoriaus. Tipinė liejimo operacijų sintaksė yra tokia:

(type-name) expression

Čia

  • Tipo pavadinimas yra standartinis „C“ kalbos duomenų tipas.
  • Išraiška gali būti pastovi, kintama arba faktinė išraiška.

Parašykime programą, kuri pademonstruotų aiškų „C“ tipo liejimą.

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

Išvestis:

Value of a is 1.200000Value of b is 2

  1. Inicijavome „float“ tipo kintamąjį.
  2. Toliau turime dar vieną sveikojo skaičiaus duomenų tipo kintamąjį „b“. Kadangi kintamieji „a“ ir „b“ yra skirtingų tipų duomenys, „C“ neleis naudoti tokios išraiškos ir sukels klaidą. Kai kuriose „C“ versijose išraiška bus įvertinta, tačiau rezultatas nebus pageidaujamas.
  3. Kad išvengtume tokių situacijų, mes turime kintamojo „a“ tipo kintamojo kintamąjį. Naudodami atviro tipo perdavimo metodus, „float“ sėkmingai pavertėme duomenų tipo sveikuoju skaičiumi.
  4. Turime atspausdintą „a“ vertę, kuri vis dar yra plūduriuojanti
  5. Po rūšiavimo, rezultatas visada bus sveikas skaičius „b“.

Tokiu būdu „C“ programavime galime įgyvendinti aiškų tipo liejimą.

Santrauka

  • Rašto spausdinimas taip pat vadinamas tipo konversija
  • Tai reiškia vieno duomenų tipo pavertimą kitu.
  • Mažesnio duomenų tipo pavertimas didesniu taip pat vadinamas tipo reklama.
  • „C“ suteikia numanomą ir aiškų tipo keitimo būdą.
  • Numanomas tipo konvertavimas veikia automatiškai, kai randamas suderinamas duomenų tipas.
  • Aiškiam tipo keitimui reikalingas tipo perdavimo operatorius.

Turėkite omenyje šias programavimo praktikos taisykles dirbdami su skirtingais duomenų tipais, kad išvengtumėte duomenų praradimo:

  • Sveikųjų skaičių tipai turėtų būti konvertuojami į plūduriuojančius.
  • Plūdiniai tipai turėtų būti konvertuojami į dvigubus.
  • Simbolių tipai turėtų būti konvertuojami į sveiką skaičių.

Įdomios straipsniai...