[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.