[Powered by Google Translate] JORDAN JOZWIAK: Tip turnare, în cel mai simplu sens, este un
modalitate de a modifica interpretarea unui computer a unor date de către
implicit sau explicit modificarea tipului său de date.
Cum ar fi schimbarea de la o int float, sau invers.
Pentru a înțelege tipul de turnare, trebuie să ne
începe cu elementele de bază -
tipurile de date în sine.
În limbile de calculator, cum ar fi C, toate variabilele au un fel
de tipul de date care determină modul în calculator, și, de asemenea,
utilizator, interpretează acea variabilă.
Tipuri de date numerice, cum ar fi un int, long long, float și
dublă, toate au propriile lor caracteristici unice și sunt
folosit pentru a specifica valori diferite intervale de precizie și de.
Turnare de tip ne permite să ia o serie virgulă mobilă cum ar fi
3.14 și de a lua parte înainte de zecimală, 3 în acest caz,
prin turnare-l la un int.
Să luăm un exemplu din limba engleză pentru o scurtă
revizuirea tipuri, precum și pentru a vedea cum se poate schimba tipul de turnare
modul în care ne interpreta o bucată de date.
Pentru datele, să ia simbolurile aici.
Mă refer doar la aceste linii atent configurate ca
simboluri, ci ca cineva care cunoaște limba engleză,
vă imediat recunosc că acestea sunt, de fapt, scrisori.
Ai înțeles implicit tipul de date.
Privind la acest șir de litere, putem vedea două
cuvinte diferite, fiecare cu propria semnificație.
Nu e substantiv, vântul, ca și în afara bate vantul.
Și acolo e verbul, vântul, așa cum am nevoie să în
vânt ceasul meu analogic.
Acesta este un exemplu interesant, pentru că putem vedea
cum tipul care am atribui datelor noastre, indiferent dacă substantiv sau
verbale, schimbă modul în care le folosim aceste date -
ca vântul cuvântul sau vânt.
Deși un calculator nu-i pasă de gramatică și piese
de exprimare în engleză, același principiu de bază se aplică.
Asta este, ne putem schimba interpretarea exactă
aceleași date stocate în memorie prin simpla turnare a unui
diferit tip.
Aici sunt dimensiunile cele mai comune tipuri de la un 32-bit
sistemul de operare.
Avem un char la 1 octet, int si float la 4 octeți, o lungă
lungă și o dublă la 8 octeți.
Pentru ca un int ocupa 4 octeti, aceasta va dura până pe 32 de biți
atunci când este stocat în memorie ca o serie binar
de zero-uri și unu.
Atâta timp cât variabila noastră rămâne ca un tip int,
calculatorul va converti întotdeauna acele unu și zero din
binar în numărul inițial.
Cu toate acestea, am putea arunca teoretic cele 32
biți într-o serie de tipuri de booleene.
Și apoi calculatorul nu va mai vedea un număr, dar
în schimb, o colecție de zero și unu.
Am putea încerca, de asemenea pentru a citi aceste date ca un cod numeric diferit
tastați, sau chiar ca un șir de patru caractere.
Atunci când se ocupă cu numere din turnare, trebuie să ia în considerare modul în care
precizia de valoarea ta va fi afectat.
Rețineți că precizia poate rămâne aceeași,
sau poti pierde precizia, dar niciodata nu poti castiga precizie.
Să mergem prin intermediul pentru cele trei cele mai comune modalități pe care le puteți
pierde precizie.
Turnarea unui float la un int va cauza trunchierea de tot
după virgulă, deci esti plecat
cu numărul întreg.
Dacă luăm x float, care va fi egal cu 3.7, putem arunca
acest variabila x la o int de scris pur și simplu int în
paranteze.
Ori de câte ori vom folosi acest termen chiar aici, vă vom eficient
fi folosind valoarea trei pentru ca ne-am redus
totul după punctul zecimal.
Ne poate converti, de asemenea, o lungă lung pentru un int, care va
în mod similar duce la o pierdere de mare de ordinul biți.
Un timp lung preia 8 bytes, sau 64 biți în memorie.
Asa ca atunci cand l-am aruncat la un int care are doar 4 octeți, sau 32
biți, suntem în esență, tocare pe toți biții care
reprezintă valorile cele mai mari binare.
Ai putea, de asemenea, un dublu aruncat la un flotor, care va oferi
vă float cel mai apropiat posibil de a dubla fara
neapărat rotunjire-l.
Similar cu mult timp lunga noastră la convertire int, pierderea
precizia se datorează faptului că o dublă conține mai multe date.
Un dublu vă va permite să stocați 53 biți semnificativi,
aproximativ 16 cifre semnificative.
Întrucât un flotor va permite doar să stocați 24
biți semnificative, de aproximativ șapte cifre semnificative.
În aceste ultimele două cazuri, ar putea fi util să se gândească la
tastați turnare ca redimensionarea o fotografie.
Când te duci la o dimensiune mare, la o dimensiune mică, nu puteți vedea
lucrurile pe cât de clar că ți-ai pierdut date
sub formă de pixeli.
Turnare de tip poate provoca, de asemenea, probleme atunci când ne
Ints aruncat la flotoare.
Deoarece plutește pe o mașină pe 32 de biți au doar 24
biți semnificative, ele nu pot reprezenta cu exactitate valorile
peste 2 la puterea de 24, sau 16777217.
Acum, hai sa vorbim despre turnarea explicite și implicite.
Turnare explicită este atunci când scriem în paranteze de tip
înainte de un nume de variabilă.
Ca un exemplu, am scris înainte de a int în paranteze înainte de a noastră
float x variabile.
În acest fel, vom obține valoarea int,
Valoarea trunchiată de 3,7 -
3.
Turnare implicit este atunci când compilatorul se schimbă automat
tipuri similare la un tip super, sau prestează un fel de alte
turnare fără a necesita utilizatorului de a scrie
orice suplimentare de cod.
De exemplu, atunci când vom adăuga 5 și 1.1, valorile noastre deja au
Tipuri de asociate cu acestea.
5 este un int, întrucât 1.1 este un flotor.
În scopul de a le adăuga, calculatorul aruncă 5 într-un flotor,
care ar fi fost același lucru ca și scris, 5,0 în
primul loc.
Dar această cale spunem float 5 sau 5.0, plus ceea ce a fost deja
un float, 1,1, și de acolo putem adăuga de fapt, aceste
valorile și obține valoarea 6.1.
Turnare implicit, de asemenea, ne permite să atribuiți variabilele de
tipuri diferite de la fiecare alte.
Putem atribui întotdeauna un tip mai puțin precisă într-o mai
precis unul.
De exemplu, dacă avem un dublu x, y si un int -
iar acestea ar putea avea orice valori care le-am stabilit la -
putem spune este egal cu x, y.
Deoarece dublă are o precizie mai mult decât un int, asa ca am
nu va pierde nici o informație.
Pe de altă parte, nu ar fi neapărat corect să spunem
y este egal cu x, deoarece s-ar putea dubla au o valoare mai mare decât
întreg.
Și astfel întreg ar putea să nu fie în măsură să dețină toate
informațiile stocate în dubla.
Turnare implicit este, de asemenea, utilizat în operatori de comparație ca
mai mare, mai mică, sau operatorul de egalitate.
În acest fel putem spune dacă 5.1 este mai mare de 5, si ajungem
rezulta adevărat.
Deoarece 5 este un int, dar va fi aruncat la un flotor, în scopul de a
fi comparată cu flotor 5.1, am spune 5.1 este
mai mare de 5.0.
Același lucru este valabil în cazul în care spune cu 2.0 egal este egal cu 2.
Ne-ar obține, de asemenea adevărat, deoarece calculatorul va arunca
2 întreg să plutească și apoi spun 2.0 este egal cu egal cu 2.0,
acest lucru este adevărat.
Nu uita că putem arunca, de asemenea, între Ints și caractere,
sau valorile ASCII.
Caractere, de asemenea, trebuie să fie redusă la binar, care este motivul pentru care
poate converti cu ușurință între caractere și respective a acestora
Valorile ASCII.
Pentru a afla mai multe despre acest lucru, a verifica afară videoclipul nostru pe ASCII.
Când luați un moment să se gândească la modul în care datele stocate e,
ea începe să facă o mulțime de sens.
E la fel ca diferența dintre vânt și vântul.
De date este aceeași, dar tipul poate schimba modul în care ne
interpreteze aceasta.
Numele meu este Iordania Jozwiak, acest CS50.