[Powered by Google Translate] JORDAN Jozwiak: Druh odliatok, v najjednoduchšom zmysle, je
spôsob, ako zmeniť v počítači výklad niektorých údajov
implicitne alebo explicitne zmeniť jeho dátový typ.
Ako je napríklad zmena typu int na float, alebo naopak.
Aby sme pochopili pretypovanie, musíme
začať sa základy -
dátové typy samotných.
V počítačových jazykoch, ako je C, všetky premenné majú nejakú
dátového typu, ktorý určuje, ako počítač, a rovnako tak
užívateľ, interpretuje túto premennú.
Numerické dátové typy ako int, long long, float a
double, všetky majú svoje vlastné jedinečné vlastnosti a sú
používa na určenie hodnoty rôznych rozsahov a precíznosť.
Pretypovanie nám umožní prijať s pohyblivou desatinnou čiarkou čísla ako
3,14 a tú úlohu pred desatinnou čiarkou, 3 v tomto prípade,
tým, že obsadí to na int.
Zoberme si príklad z anglického jazyka pre krátke
preskúmanie typov, a vidieť, ako pretypovanie môže zmeniť
spôsob, akým interpretovať kus dát.
Pri údajoch, poďme sa symboly tu.
Len som sa odvolávajú na tieto starostlivo nastavených zásad ako
symboly, ale ako niekto, kto pozná anglický jazyk,
môžete okamžite rozpoznať, že sú v skutočnosti, listy.
Môžete implicitne chápaný typ dát.
Pri pohľade na tohto reťazca písmen môžeme vidieť dve
rôzne slová, každý s vlastným zmysle.
Tam je podstatné meno, vietor, rovnako ako v fúka vietor mimo.
A je tu sloveso, vietor, rovnako ako v musím
vietor analógovú hodinky.
To je zaujímavý príklad, pretože vidíme,
ako typ, ktorý sme priradili do našich dát, či už meno alebo
slovesné, zmena spôsobu užívame, že údaje -
ako slovo vietor alebo vietor.
Hoci počítač nestará o gramatike a diely
anglickej reči, rovnaké základné zásada platí.
To znamená, že môžeme zmeniť výklad presný
rovnaké dáta uložené v pamäti jednoducho odlievanie do
iný typ.
Tu sú veľkosti najbežnejších typov na 32-bit
operačný systém.
Máme char na 1 byte, int a float na 4 bajty, dlhé
dlhé a double na 8 bajtov.
Vzhľadom k tomu, int zaberá 4 bajty, bude trvať až 32 bitov
keď sa uloží do pamäte ako binárny série
núl a jedničiek.
Tak dlho, ako našej premenné zostáva ako typ int, na
Počítač bude vždy previesť tie jednotky a nuly z
Binárne do pôvodného počtu.
Avšak, mohli by sme teoreticky obsadenie tých 32
bitov do radu logických typov.
A potom počítač by už vidieť číslo, ale
miesto kolekcie núl a jedničiek.
Mohli by sme sa tiež pokúsiť čítať, že údaje ako iný číselný
písať, alebo dokonca ako reťazec štyroch znakov.
Pri práci s číslami v liatie, musíte zvážiť, ako
presnosť vášho hodnoty budú ovplyvnené.
Majte na pamäti, že presnosť môže zostať rovnaký,
alebo môžete stratiť presnosť, ale nikdy nemôžete získať presnosť.
Poďme prejsť za tri najbežnejšie spôsoby, ktoré môžete
stratiť presnosť.
Odlievanie float na int spôsobí skrátenie všetkého
za desatinnou čiarkou, takže ste odišiel
s celkového počtu.
Ak vezmeme float x, ktorý bude rovnať 3,7, môžeme obsadenie
táto premenná x typu int jednoducho písať int v
zátvorky.
Kedykoľvek sme sa použiť tento termín priamo tu, zídeme sa účinne
používať hodnotu tri, pretože sme skrátený
všetko za desatinnou čiarkou.
Môžeme tiež previesť long long na int, ktorá bude
podobne viesť k strate vyššieho rádu bitov.
Dlho, dlho trvá až 8 bajtov, alebo 64 bitov v pamäti.
Takže keď sme sa přetypovat na int, ktorý má len 4 byty, alebo 32
bity, sme v podstate uřízneš všetky bity, ktoré
predstavujú vyššiu binárne hodnoty.
Dalo by sa tiež obsadený double na float, ktorý vám poskytne
si najbližšie možné plavák do výšky dvojnásobku bez
nutne zaokrúhlenia to.
Podobne ako naše long long int konverzie, strata
presnosť je preto dvojaký obsahuje viac dát.
Double vám umožní uložiť 53 významných bitov,
približne 16 platných číslic.
Vzhľadom k tomu, plavák iba vám umožní ukladať 24
bity, zhruba sedem platných číslic.
V týchto posledných dvoch prípadoch môže byť užitočné myslieť na
pretypovanie ako zmenu veľkosti fotografií.
Keď idete z veľkej veľkosti na malé veľkosti, nemôžete vidieť
veci tak jasne, pretože ste stratili dát
vo forme obrazových bodov.
Pretypovanie môže tiež spôsobiť problémy, keď sme
obsadenie ints na plaváky.
Vzhľadom k tomu, pláva na 32-bit stroje iba 24
bity, nemôžu presne reprezentujú hodnoty
nad 2 k sile 24, alebo 16777217.
Teraz poďme hovoriť o explicitné a implicitné liatie.
Explicitné obsadenie je, keď napíšeme typ v zátvorke
pred názov premennej.
Ako príklad, ako sme napísali int v zátvorkách pred naším
float premennej x.
Týmto spôsobom, dostaneme int hodnotu,
oklieštenej 3,7 -
3.
Implicitná obsadenie je, keď kompilátor automaticky zmení
podobné typy na super typ, alebo vykonáva nejaký iný druh
odlievanie bez nutnosti, aby užívateľ zapísať
žiadne ďalšie kód.
Napríklad, keď pridáme 5 a 1,1, naše hodnoty už
Typy sú s nimi spojené.
Na 5 je int, zatiaľ čo 1.1 je float.
Aby bolo možné pridať, počítač vrhá 5 do plaváka,
ktoré by boli rovnaké ako písanie 5,0 v
prvé miesto.
Ale takto povedať, float 5, alebo 5,0, plus to, čo bolo už
plavák, 1,1, a odtiaľ môžeme skutočne pridať tieto
hodnoty a získať hodnotu 6,1.
Implicitná obsadenie nám tiež umožňuje priradiť premenné
rôzne druhy navzájom.
Môžeme vždy priradiť menej presný typ do viac
presné jedna.
Napríklad, ak my máme double x, a int y -
a mohli by mať všetky hodnoty, ktoré sme si stanovili im -
môžeme povedať, x sa rovná y.
Vzhľadom k tomu, double má viac presnosť ako typ int, takže sme
nestratí žiadne informácie.
Na druhej strane, by to nevyhnutne správne povedať
y sa rovná x, pretože dvojitý môže mať väčšiu hodnotu než
celočíselná.
A tak celé číslo nemusí byť schopný držať všetky
Informácie uložené v double.
Implicitná obsadenie je tiež použitý v relačnej operátormi, ako
väčšie ako, menšie ako alebo operátor rovnosti.
Týmto spôsobom môžeme povedať, či 5,1 je väčšia ako 5, a dostaneme
dôjsť pravda.
Vzhľadom k tomu, 5 je int, ale bude to byť přetypovat na float, aby sa
byť v porovnaní s plavákom 5,1, by sme povedali, 5,1, je
väčší ako 5,0.
To isté platí pre ostatné, ak 2,0 rovná rovná 2.
Radi by sme tiež získať pravdivé, pretože počítač bude obsadenie
integer 2 plávať a potom povedať 2,0 rovná rovná 2,0,
je to pravda.
Nezabudnite, že môžeme tiež obsadiť medzi ints a pripaľuje,
alebo ASCII hodnoty.
Znaky tiež potrebné znížiť na binárne, čo je dôvod, prečo
môžete ľahko prevádzať medzi znakmi a ich príslušných
ASCII hodnoty.
Ak sa chcete dozvedieť viac o tom, pozrite sa na naše videá na ASCII.
Keď budete mať chvíľku premýšľať o tom, ako je uložený dát,
začína robiť veľa zmysel.
Je to ako rozdiel medzi vetrom a vietor.
Tieto údaje sú rovnaké, ale typ môže meniť ako
interpretovať.
Moje meno je Jordan Jozwiak, to cs50.