[Powered by Google Translate] Jordanija JÓŹWIAK: Tipas liejimas, paprasčiausias prasme, yra
būdas pakeisti kompiuterio aiškinimą kai kurių duomenų
numanomai arba aiškiai keičia savo duomenų tipą.
Tokie kaip keičiasi int float arba atvirkščiai.
Norėdami suprasti tipo liejimo, mes turime
pradėti nuo pagrindinių dalykų -
duomenų tipai.
Kompiuterinių kalbų, kaip C, visi kintamieji turi tam tikros rūšies
duomenų tipą, kuris nustato, kaip kompiuteris, ir taip pat
vartotojas, aiškina, kad kintamasis.
Skaitiniai duomenų tipų, pavyzdžiui, int, long long, plūdės ir
dviviečiai, visi turi savo unikalių savybių ir
naudojamas apibrėžti vertybes įvairaus intervalus ir tikslumą.
Tipas liejimo leidžia mums priimti zmiennoprzecinkową kaip
3,14 ir gauti dalį prieš dešimtainės 3 šiuo atveju,
liejimo jį į int.
Paimkime pavyzdį iš anglų kalbos trumpas
peržiūrėti rūšių ir pamatyti, kaip galite pakeisti tipas liejimas
kaip mes interpretuoti duomenų lapą.
Duomenų, tegul simbolius.
Aš tiesiog kreiptis į šių kruopščiai sukonfigūruotus linijų
simboliai, bet ką nors, kas žino anglų kalbą,
jūs iš karto pripažinti, kad jie yra iš tikrųjų, laiškai.
Jūs netiesiogiai suprato duomenų tipą.
Žiūri šį raidžių, mes galime pamatyti dvi
skirtingų žodžių, kurių kiekvienas turi savo prasmę.
Yra daiktavardžio, vėjo, kaip pučia vėjas ne.
Ir yra veiksmažodis, vėjo, kaip man reikia
baigiantis mano analoginį laikrodį.
Tai yra įdomus pavyzdys, nes mes galime pamatyti
kaip tipo, kad mes priskirti mūsų duomenimis, ar daiktavardis ar
veiksmažodis, kaip mes ją naudojame, kad duomenys -
žodžio vėjo ar vėjo.
Nors kompiuteris nerūpi gramatikos ir jų dalių
anglų kalbos, tas pats pagrindinis principas.
Tai reiškia, kad mes galime pakeisti tiksliai reikia aiškinti
tie patys duomenys saugomi atmintyje, tiesiog liejimo jį į
skirtingo tipo.
Čia yra labiausiai paplitusių rūšių dydžiai nuo 32-bitų
operacinę sistemą.
Mes turime char 1 baitą, int ir float, esant 4 baitų, ilgą
ilgio ir 8 baitų dvigubai.
Kadangi int užima 4 baitų, tai užims 32 bitų
, kai ji saugoma atmintyje kaip dvejetainis serijos
nulių ir.
Kaip ilgai, kaip mūsų kintamojo išlieka tipo int,
kompiuteris visada konvertuoti tuos ir nulių iš
dvejetainis į pradinio skaičiaus.
Tačiau mes teoriškai galėtų atiduoti tiems 32
bitai į Būlio tipų serijos.
Tada kompiuteris nebebus pamatyti skaičių, bet
vietoj nulių ir kolekcija.
Mes taip pat galėtų pabandyti skaityti, kad skiriasi skaitmeninė duomenis
tipo, ar net keturių simbolių eilutė.
Kai sprendžiami su numeriais liejimo, turite apsvarstyti, kaip
savo vertės tikslumas bus paveikta.
Turėkite omenyje, kad tikslumas gali likti tas pats,
ar jums gali prarasti tikslumą, bet jūs niekada negali gauti tikslumą.
Eikime per trijų labiausiai paplitusių būdų, kad galite
praras tikslumą.
Liejimo plūdę int sukelti pažemintos viską
po kablelio, todėl jūs kairėje
sveiko skaičiaus.
Jeigu mes priimsime float x, kuris bus lygus 3,7, mes galime mesti
Šis kintamasis x iki int tiesiog raštu int
skliausteliuose.
Kai mes naudojame šis terminas čia, mes efektyviai
vertę trys, nes mes sutrumpintas
viskas po kablelio.
Mes taip pat gali konvertuoti ilgai ilgai int, kuris bus
panašiai sukelti aukšto tvarkos bitų nuostolių.
Ilgai ilgai trunka iki 8 baitų, arba 64 bitai atmintyje.
Taigi, kai mes mesti jį į int, kuri turi tik 4 baitai arba 32
bitai, mes iš esmės nupjovė visus bitus, kad
atstovauja aukštojo dvejetainius vertę.
Jūs taip pat galėtų mesti dvigubai pinigų srautą, kuris suteiks
jums artimiausiems plūdė Bėgte be
nebūtinai tai apvalinimo.
Panašus į mūsų ilgai ilgai int konvertavimo nuostolis
tikslumas yra dėl to, kad yra dvigubai daugiau duomenų.
Dvigubai leis jums laikyti 53 reikšmingas bitai,
maždaug 16 reikšminių skaitmenų.
, Kadangi plūdė tik leidžia jums išsaugoti 24
reikšmingi bitai, maždaug septyni reikšminių skaitmenų.
Šiais paskutiniais dviem atvejais, ji gali būti naudinga galvoti apie
įveskite liejimo kaip dydžio keitimas, foto.
Kai jūs einate iš didelio dydžio mažo dydžio, jūs negalite pamatyti
dalykų, kaip aiškiai, nes jūs praradote duomenis
pikselių.
Tipas liejimo taip pat gali sukelti problemų, kai mes
mesti Ints plūdės.
Nuo plūdės ant 32-bit mašina tik 24
reikšmingi bitai, jie negali tiksliai atspindi vertybes
24, arba 16.777.217 galia 2 daugiau.
Dabar pakalbėkime apie eksplicitiškai ir implicitiškai liejimo.
Aiškiai liejimas yra, kai mes rašome tipo skliausteliuose
prieš kintamojo vardą.
Kaip, pavyzdžiui, prieš rašėme int skliausteliuose prieš mūsų
plaukti kintamasis X.
Tokiu būdu mes gauname int vertę,
sutrumpintas vertė 3,7 -
3.
Implicit liejimas yra kai kompiliatorius automatiškai pakeičia
panašių rūšių super tipo, arba atlieka tam tikrą kitos rūšies
liejimo, nereikalaujant, kad vartotojas galėtų rašyti
bet koks papildomas kodas.
Pavyzdžiui, kai mes įtraukiame 5 ir 1,1 m. Mūsų vertybės jau turi
rūšių su jais.
5 yra int, o 1.1 plūdės.
, Siekiant įtraukti juos, kompiuteris verčia į plūdės 5
, kuris būtų buvę tas pats, kaip 5,0 raštu
pirmąją vietą.
Tačiau tai, kaip mes sakome, plūdę 5, arba 5,0, plius tai, ką jau buvo
plūdės, 1,1, ir iš ten mes iš tikrųjų galite pridėti juos
vertybės ir gauti vertę 6,1.
Implicit liejimo taip pat leidžia mums priskirti kintamieji
įvairių tipų viena kitai.
Mes visada galime priskirti tipo į daugiau mažiau tiksliai
tiksli vienas.
Pavyzdžiui, jei mes turime Dvivietis x ir int y -
kurie gali turėti visus parametrus, mes juos
mes galime pasakyti, X reiškia y.
Nes dvigubas tiksliau, nei int, todėl mes
nebus prarasti bet kokią informaciją.
Kita vertus, tai nebūtinai teisinga sakyti,
y lygus x, nes dvigubas gali turėti didesnę vertę nei
sveikasis skaičius.
Ir todėl sveikasis skaičius gali būti neįmanoma laikyti visas
Bėgte saugoma informacija.
Implicit liejimo palyginimo operatoriai taip pat naudojamas kaip
didesnis nei mažesnis arba lygybė operatorius.
Tokiu būdu mes galime pasakyti, jei 5,1 yra didesnis nei 5, ir mes
sukelti tiesa.
, Nes 5 yra int, bet jis bus įmestas į pinigų srautą, kad būtų
, palyginti su 5,1 plūdės, mes norime pasakyti 5,1 yra
didesnis nei 5,0.
Tas pats pasakytina ir pasakyti, jei 2,0 lygu lygu 2.
Mes taip pat gauti tiesa, nes kompiuteris bus balsuoti
sveikasis skaičius 2 plaukti ir tada pasakyti, 2,0 lygu lygu 2,0,
tai yra tiesa.
Nepamirškite, kad mes taip pat galime mesti tarp int ir simbolių,
arba ASCII vertės.
Simbolių taip pat reikia sumažinti į dvejetainį, kuris yra, kodėl jums
gali lengvai konvertuoti tarp simbolių ir jų atitinkamų
ASCII vertės.
Norėdami daugiau sužinoti apie tai, patikrinkite mūsų vaizdo ASCII.
Kai jūs šiek tiek laiko ir galvoti apie tai, kaip duomenys saugomas,
ji pradeda daug prasmės.
Tai kaip skirtumą tarp vėjo ir vėjo.
Duomenys yra tas pats, bet tipo gali pakeisti, kaip mes
jį išaiškinti.
Mano vardas yra Jordanija Jóźwiak, tai CS50.