Skirtumas tarp tipo liejimo ir tipo konvertavimo

Autorius: Laura McKinney
Kūrybos Data: 1 Balandis 2021
Atnaujinimo Data: 4 Gegužė 2024
Anonim
Type Casting vs Type Conversion|Difference between Type Casting and Type Conversion
Video.: Type Casting vs Type Conversion|Difference between Type Casting and Type Conversion

Turinys


Pagrindinis skirtumas tarp tipo konvertavimo ir tipo liejimo, t. Y. Tipo konvertavimą „automatiškai“ atveria kompiliatorius, o tipo keitimą „aiškiai daro“ programuotojas.

Dvi sąvokos „tipo liejimas“ ir „tipo konvertavimas“ įvyksta, kai reikia konvertuoti vieną duomenų tipą į kitą. Kai abu tipai yra suderinami vienas su kitu, kompiliatorius automatiškai konvertuoja vieną tipą į kitą. Aptarsime palyginimo lentelės pagalba, koks yra liejimo ir konvertavimo tipų skirtumas.

  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama:

Palyginimo pagrindasTipo liejimasTipo konvertavimas
ReikšmėVieną duomenų tipą vartotojas priskiria kitam vartotojui, naudodamas perdavimo operatorių, tada jis vadinamas „Type Casting“.Vieno duomenų tipo konvertavimas į automatinį kompiliatorių yra vadinamas „Type Conversion“.
TaikomaTipo perdavimas taip pat gali būti taikomas dviem nesuderinamiems duomenų tipams.Tipo konvertavimas gali būti įgyvendinamas tik tada, kai suderinami du duomenų tipai.
operatoriusNorint perduoti duomenų tipą kitam, reikalingas duomenų perdavimo operatorius ().Nereikia operatoriaus.
Duomenų tipų dydisPaskirties tipas gali būti mažesnis nei šaltinio tipas.Čia paskirties vietos tipas turi būti didesnis nei šaltinio.
ĮgyvendintaTai atliekama kuriant programą.Tai atliekama aiškiai renkant.
Konversijos tipas

Siaurinamas konversija.Išplėsti konversiją.
Pavyzdysint a;
b baitas;
...
...
b = (baitas) a;
int a = 3;
plūdės b;
b = a; // vertė, išreikšta b = 3 000.


Tipo liejimo apibrėžimas

Tipo liejimas Programuotojas gali apibrėžti vieno duomenų tipo perkėlimą į kitą duomenų tipą programos sudarymo metu. Neįmanoma automatiškai konvertuoti vieno duomenų tipo į kitą. Gali būti, kad „paskirties tipas“ yra mažesnis nei „šaltinio tipas“. Todėl programuotojas turi atiduoti didesnį duomenų tipą aiškiai į mažesnius duomenų tipus, naudodamas perdavimo operatorių „()“. Kadangi didesnis duomenų tipas yra modifikuojamas į mažesnį duomenų tipą, jis taip pat vadinamas „siaurinančia konversija“.

Deklaracija:

Destination_type = (target_type) kintamasis / reikšmė // taikinio tipas yra tipas, kuriame norite konvertuoti šaltinio tipą, jis visada yra paskirties tipas.

Pavyzdys

Supraskime tai pavyzdžiu. Norite konvertuoti duomenų tipą „int“ į „baitą“. Kadangi „baitas“ yra mažesnis nei „int“, tipo konvertavimas neleidžiamas. Čia mes turėjome netiesiogiai konvertuoti „int“ į „baitą“ naudodami liejimo operatorių „()“. Kadangi „int“ yra didesnis nei „baitas“, „int“ dydis bus sumažintas iki „int mod baitų“ diapazono.


int a; b baitas; ... ... b = (baitas) a;

Kai „plūdė“ paverčiama į „int“, plūdės dydis sutrumpėja, nes „int“ neišsaugo trupmeninės vertės. Jei paskirties vietos dydis yra per mažas, kad šaltinio tipas tilptų, tada šaltinio tipas yra modulo paskirties tipas „diapazonas“. Perdavimas taip pat gali būti taikomas, kai duomenų tipai yra suderinami. Geriausia yra naudoti liejimą visur, kur reikia tipo keitimo.

Tipo konvertavimo apibrėžimas

Tipo konvertavimas yra automatinis vieno duomenų tipo konvertavimas į kitą, kai to reikalaujama, aiškiai atliekama kompiliatoriaus. Tačiau prieš keičiant tipą turi būti įvykdytos dvi sąlygos.

  • Šaltinio ir paskirties tipas turi būti suderinami.
  • Paskirties tipas turi būti didesnis nei šaltinio tipas.

Šios dvi sąlygos turėtų būti įvykdytos, norint pasiekti tipo konvertavimą, o tokio tipo konversija vadinama „plečiančia konversija“, nes mažesnis tipas yra konvertuojamas į didesnį, įvyksta tipo išplėtimas. Dėl šios išplėstinės konversijos skaitiniai tipai, kaip „int“, „plūduriuojantis“, yra suderinami vienas su kitu, o skaitiniai - char ir boolean arba char – boolean - taip pat nesuderinami.

Pavyzdys

Šis pavyzdys suteiks geresnį vaizdą apie tai

int a = 3; plūdės b; b = a; // vertė, išreikšta b = 3 000.

Čia „int“ virsta į „float“, didesnį už „int“, todėl plečiamas šaltinio tipas. Čia nereikia jokio liejimo operatoriaus, nes sudarytojas tai padarys aiškiai.

  1. Pagrindinis skirtumas, kuris skiria tipo liejimą nuo tipo konvertavimo, yra tas, kad tipo liejimas yra vieno tipo konvertavimas į kitą, kurį atlieka programuotojas. Kita vertus, tipo konvertavimas yra vieno tipo konvertavimas į kitą, kurį kompiliatorius atlieka rinkdamas.
  2. Duomenų tipams gali būti taikomi tipiniai perdavimai, kurie gali būti nesuderinami vienas su kitu. Atvirkščiai, tipo konvertavimas gali būti taikomas tik duomenų tipams, kurie yra suderinami vienas su kitu.
  3. Vieno tipo konvertavimui į kitą tipą liejant reikalingas liejimo operatorius „()“, o konvertuojant vieną duomenų tipą į kitą, operatoriui nereikia.
  4. Konvertuojant vieną duomenų tipą į kitą perduodant tipą, paskirties tipas gali būti didesnis arba mažesnis nei šaltinio tipas. Priešingai, paskirties tipas turi būti didesnis nei šaltinio tipas atliekant tipo konvertavimą.
  5. Vieno tipo konversija į kitą tipą atliekama kodavimo metu liejant tipus. Priešingai, keičiant tipą, vieno tipo konvertavimas į kitą atliekamas aiškiai kompiliavimo metu.
  6. Tipo perdavimas vadinamas siaurinančia konversija, nes čia paskirties tipas gali būti mažesnis už šaltinio tipą. Skirtingai nei tipo konvertavimas vadinamas išplėstine konversija, nes čia paskirties tipas turi būti didesnis nei šaltinio tipas.

Išvada:

Galima daryti išvadą, kad tipo konvertavimas ir tipo keitimas atlieka užduotį konvertuoti vieną duomenų tipą į kitą, tačiau skiriasi ta prasme, kad tipo liejimą vykdo programuotojas, naudodamas perdavimo operatorių (), o tipo konvertavimą vykdo kompiliatorius. , ir jis nenaudoja jokio operatoriaus.