[Powered by Google Translate] JORDAN JOZWIAK: Tip lijevanje, u najjednostavnijem smislu, je
način mijenjati računalu tumačenje nekih podataka
implicitno ili eksplicitno mijenja svoju vrstu podataka.
Kao što su mijenjanje int na plovak, ili obrnuto.
Da bi razumjeli tipa casting, trebamo
početi s osnove -
vrste podataka sami.
U računalnih jezika poput C, sve varijable imaju nekakvu
podataka tipa koji određuje kako će računalo, a isto tako
korisnik, tumači tu varijablu.
Numerički tipovi podataka kao što je int, long long, float i
bračni, svi imaju svoje jedinstvene karakteristike i
koristiti za određivanje vrijednosti različitih raspona i preciznost.
Tip lijevanje omogućuje nam da se decimalni broj kao
3,14 i dobiti dio prije decimale, 3 u ovom slučaju,
ga bacaju na int.
Uzmimo primjer iz engleskog jezika za kratki
pregled tipova, i vidjeti kako tip lijevanje može promijeniti
način interpretirati dio podataka.
Za podacima, hajdemo uzeti simbole ovdje.
Upravo sam se odnosi na ove pažljivo konfiguriranih linije kao
simboli, ali kao netko tko zna engleski jezik,
možete odmah prepoznati da su, u stvari, slova.
Vi razumjela vrstu podataka.
Gledajući ovaj niz slova možemo vidjeti dvije
različite riječi, svaka sa svojom smislu.
Tu je imenica, vjetar, kao u vjetar puše vani.
I tu je glagol, vjetar, kao iu trebam
vjetar moj analogni sat.
Ovo je zanimljiv primjer, jer možemo vidjeti
kako tip koji smo dodijelili našim podacima, je li imenica ili
glagol mijenja kako se koriste te podatke -
kao riječi vjetar ili vjetar.
Iako računalo ne brine o gramatici i dijelovi
engleskog govora, isti osnovni princip vrijedi.
To je, možemo promijeniti tumačenje točno
Isti podaci pohranjeni u memoriji, jednostavno ga bacaju na
drugačiji tip.
Ovdje su veličine od najčešćih tipova na 32-bitni
operativni sustav.
Imamo char na jedan byte, int i lebdjeti na 4 bajta, dugo
dugo i dvaput na 8 bajtova.
Zbog int zauzima 4 byte, to će potrajati 32 bita
kada se pohranjuje u memoriju kao binarni niz
nula i one.
Dokle god naše varijable ostaje kao tipa int, The
računalo će uvijek pretvoriti one one i nula iz
binarni u izvornom broju.
Međutim, mi teoretski mogao baciti onih 32
bitova u niz Boolean tipova.
A onda računalo ne bi više vidjeti broj, ali
umjesto zbirka nula i one.
Također smo mogli pokušati pročitati te podatke kao drugačiji numerička
upisati, ili čak kao niz od četiri znakova.
Kad se bave brojeva u lijevanje, morate uzeti u obzir kako
preciznost svoju vrijednost će biti pogođeni.
Imajte na umu da je precizna može ostati isti,
ili možete izgubiti preciznost, ali nikada ne možete dobiti preciznost.
Idemo kroz za tri najčešćih načina na koje možete
izgubiti preciznost.
Casting je plovak na int će uzrokovati skraćivanje svega
nakon decimalne točke, tako da ste ostavili
s cijeli broj.
Ako uzmemo float x koji će izjednači 3,7, možemo baciti
ova varijabla x int jednostavno pisati int u
zagrade.
Kad god smo koristiti taj termin ovdje, mi ćemo učinkovito
se koriste vrijednost triju jer smo odrezan
sve nakon decimalne točke.
Mi također može pretvoriti dugo dugo int, koji će
slično dovesti do gubitka velike reda bita.
Dugo dugo traje do 8 bajtova, ili 64 bita u sjećanju.
Dakle, kada smo ga baci na int koji ima samo četiri bajtova ili 32
bita, što u suštini chopping off sve bitova koji
predstavljaju više vrijednosti binarne.
Također bi mogao baciti dvostruko na plovak, koji će dati
ti najbliži mogući plutaju na kontre bez
nužno zaokruživanje to.
Slično naš dugo dugo int pretvorbe, gubitak u
preciznost je dvostruka jer sadrži više podataka.
Dvostruko će vam omogućiti da pohraniti 53 značajnih bitova,
oko 16 značajnih znamenki.
Dok plutaju samo da će vam omogućiti da pohraniti 24
značajnih bitova, otprilike sedam značajne znamenke.
U ovih posljednjih dva slučaja, to može biti korisno misliti
upišite casting kao mijenjanje veličine fotografija.
Kada idete iz velikog veličine do male veličine, ne možete vidjeti
stvari kao što je jasno, jer ste izgubili podatke
u obliku piksela.
Tip lijevanje također može uzrokovati probleme kada smo
baci Ints da pliva.
Budući da pliva na 32-bitnom stroju imaju samo 24
značajnih bitova, oni ne mogu točno predstavljaju vrijednosti
više od 2 na potenciju 24, ili 16.777.217.
Sada ćemo govoriti o eksplicitnim i implicitnim lijevanje.
Eksplicitno casting je kad smo napisati tip u zagradama
prije imena varijabli.
Kao primjer, prije nego što smo pisali int u zagradi prije naše
plutaju varijabla x.
Na ovaj način, dobili smo int vrijednosti,
skraćen vrijednost 3,7 -
3.
Implicitno casting je kada prevodilac automatski mijenja
slične vrste u super tipu, ili obavlja neku drugu vrstu
lijevanje bez potrebe korisnika za pisanje
svaki dodatni broj.
Na primjer, kada smo dodali 5 i 1,1, naše vrijednosti već imate
vrste povezane s njima.
5 je int, dok 1.1 plovak.
Da bi ih dodali, računalo baca 5 u float,
koja bi bila ista stvar kao i pisanje 5,0 u
prvo mjesto.
No, na taj način možemo reći plovak 5 ili 5,0, plus ono što je već
float, 1.1, i od tamo zapravo možemo dodati ove
Vrijednosti i dobiti vrijednost 6,1.
Implicitno lijevanje također nam omogućuje da dodijeliti varijabli
različite vrste međusobno.
Mi uvijek može dodijeliti manje precizan tip u više
precizan jedan.
Na primjer, ako imamo dvostruki X, i jedan int y -
a to bi moglo imati nikakve vrijednosti koje smo ih postavili na -
možemo reći x jednaka y.
Budući bračni ima više preciznosti nego int, pa smo
neće izgubiti sve podatke.
S druge strane, to ne mora nužno biti točno reći
y jednak x, jer bračni može imati veću vrijednost nego
cijeli broj.
I tako cijeli možda neće biti u mogućnosti to držati sve
podaci pohranjeni u dvostruko.
Implicitno lijevanje Također se koristi u usporedbi operatera poput
veći od, manje od, ili jednakost operatora.
Na taj način možemo reći, ako je veći od 5,1 pet, a mi smo dobili
rezultirati istina.
Zbog pet je int, ali to će biti bačen na plovak kako bi se
se u odnosu na plovak 5.1, mi bismo rekli 5.1 je
veći od 5.0.
Isto vrijedi i za reći, ako 2,0 jednak jednak dva.
Mi također bih se istina, jer računalo će baciti
cijeli dvije plutaju i onda kažu 2,0 jednak jednak 2,0,
to je istina.
Nemojte zaboraviti da smo se također može baciti između Ints i znakovi,
ili ASCII vrijednosti.
Znakova također treba svesti na binarnom, što je razlog zašto
može se lako pretvoriti između znakova i njihovih
ASCII vrijednosti.
Da biste saznali više o tome, check out naš video na ASCII.
Kada uzeti trenutak razmišljati o tome kako podaci se pohranjuju,
počinje napraviti puno smisla.
To je baš kao razlika između vjetra i vjetra.
Podaci isti, ali možete promijeniti tip kako bismo
ga tumače.
Moje ime je Jordan Jozwiak, to cs50.