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