[Powered by Google Translate] Jordaania Jóźwiak: Tüüp valu, kõige lihtsamal mõttes on
kuidas muuta arvuti tõlgendab mõningaid andmeid
kaudselt või otseselt muutmata selle andmetüübi.
Näiteks vahetada int et ujuk, või vastupidi.
Et mõista tüüpi valu, peame
alustada põhitõed -
andmetüübid ise.
Kui arvuti keeltes nagu C, kõik muutujad on mingisugune
Andmete tüüp, mis määrab arvuti, ja samuti
kasutaja, tõlgendab, et muutuja.
Arvuline andmetüüpe nagu int, long pikk, Ujuki ja
topelt, kõigil on oma ainulaadsed omadused ning on
saab määrata väärtused erinevad vahemikud ja täpsust.
Tüüp casting võimaldab meil võtta murdarv nagu
3.14 ja saada osa enne koma, 3 sel juhul,
valamise see int.
Võtame näiteks inglise keel lühikeseks
vaadata tüüpe, ja näha, kuidas tüüpi valu võib muutuda
kuidas me tõlgendame tükk andmed.
Andmete, võtame sümbolid siin.
Ma lihtsalt nimetame neid hoolikalt seadistatud read
sümboleid, kuid kui keegi, kes teab inglise keeles,
sa kohe aru, et nad on tegelikult tähed.
Sa kaudselt mõista andmetüüp.
Vaadates seda tähtede saame näha kahte
erinevad sõnad, millest igaühel on oma tähendus.
Seal on nimisõna, tuul, kui tuul puhub väljas.
Ja seal on tegusõna, tuul, kui mul on vaja
tuul minu analoog kella.
See on huvitav näide, sest me ei näe
kuidas tüüp, et anname oma andmed, kas nimisõna või
verb, muutused kuidas me kasutame, et andmed -
kui sõna tuul või tuule eest.
Kuigi arvuti ei hooli grammatika ja osad
inglise kõnes, sama põhimõte kehtib.
See tähendab, et saame muuta tõlgendamise täpset
samu andmeid salvestatakse mällu lihtsalt casting seda
erinevat tüüpi.
Siin on suurused kõige levinumat 32-bit
operatsioonisüsteemi.
Meil on char on 1 bait, int ja Ujuki 4 baiti, pikk
pikk ja topelt kell 8 baiti.
Kuna int kulub 4 baiti, see võtab kuni 32 bitti
kui see on salvestatud mällu binaarne seeria
nulle ja ühtesid.
Niikaua kui meie muutuja jääb tüübist int,
arvuti on alati teisendada need ühtesid ja nulle alates
kahekomponentsete võtta esialgset arvu.
Kuid me võiks teoreetiliselt koo need 32
bitti arvesse mitmeid Boole'i ​​tüüpi.
Ja siis arvuti ei ole enam näha mitmeid, kuid
asemel kogumise nulle ja ühtesid.
Võiksime proovida ka lugenud, et andmeid erinevate numbrilist
kirjuta, või isegi kui string nelja märgiga.
Suheldes numbrid valu, siis peab kaaluma, kuidas
täpsust oma väärtust mõjutab.
Pea meeles, et täpsus võib jääda samaks,
või võid kaotada täpsusega, kuid te ei saa kunagi võita täpsusega.
Lähme läbi kolme kõige levinumaid viise, et saate
kaotada täpsusega.
Casting ujuk int paneb kärpimise kõik
pärast koma, nii sa jätta
koos täisarvuni.
Kui me võtame float x, mis võrdub 3,7, saame heita
See muutuja x int lihtsalt kirjalikult int sisse
sulgudes.
Iga kord, kui me kasutame seda mõistet siin, paneme tõhusalt
kasuta väärtus kolme, sest me oleme kärbitud
kõik pärast koma.
Meil saab ka konverteerida pikk pikk int, kes edastab
sarnaselt põhjustada kaotus kõrge et bitti.
Pikka kulub 8 baiti ehk 64 bitti mälu.
Nii et kui me valatud see int mis on ainult 4 baiti, või 32
bitti, me sisuliselt peenestamist off kõik bitid, et
esindab kõrgemat binaarsed väärtused.
Sa võid ka koo kahekordse et ujuk, mis annab
sa lähim võimalik käibevahendeid kahekordse ilma
tingimata ümardamise ta.
Sarnaselt meie pikka int tulemus, kahju
täpsus, sest topelt sisaldab rohkem andmeid.
Topelt võimaldab salvestada 53 olulise bitti,
umbes 16 tüvenumbrini.
Arvestades float ainult võimaldab salvestada 24
märkimisväärne bitti, umbes 7 tüvenumbrini.
Nende kahe viimase puhul võib see olla kasulik mõelda
tüüpi valu nagu saneerimist foto.
Kui te lähete alates suur suurus väiksusest, sa ei näe
asju nii selgelt, sest sa kaotasid andmed
kujul pikslit.
Tüüp valu võib põhjustada ka probleeme, kui me
valatud ints et ujukid.
Kuna ujukid 32-bit masin on ainult 24
märkimisväärne bitti, nad ei saa täpselt väärtused
üle 2 astmes 24, või 16777217.
Nüüd räägime otsesed ja kaudsed valu.
Selgesõnaline valu on siis, kui me kirjutame tüüp sulgudes
enne muutuja nimi.
Näiteks enne kui me kirjutas int sulgudes enne meie
float muutuja x.
Sel moel saame int väärtus,
kärbitud väärtus 3,7 -
3.
Kaudsed valu on siis, kui kompilaator automaatselt
samaliigilisest et super tüüp, või täidab mõnda muud liiki
casting nõudmata kasutajal kirjutada
täiendavat koodi.
Näiteks kui lisame 5 ja 1.1, meie väärtused juba
tüübid nendega.
5 on int, samas 1.1 on sularahaga.
Selleks, et lisada need, arvuti heidab 5 arvesse float,
mis oleks olnud sama asi, kui kirjalikult 5.0
esiteks.
Aga niimoodi me ütleme float 5 või 5.0, pluss mis oli juba
float, 1.1, ja sealt saame tegelikult lisada need
väärtused ja saada väärtus 6.1.
Kaudsed valu ka võimaldab meil määrata muutujate
erinevat tüüpi omavahel.
Me ei saa alati anda vähem täpseid tipite rohkem
täpne üks.
Näiteks, kui meil on double x, ja int y -
ja need võivad olla mistahes väärtused, mida me lasta neil -
võib öelda, x võrdub y.
Kuna topelt on rohkem täpsust kui keskmine, nii et me
ei kaota teavet.
Teiselt poolt, see ei pruugi olla õige öelda
y võrdub x, sest kahekordse võib olla suurem väärtus kui
täisarv.
Ja nii täisarv ei pruugi olla võimalik, et hoida kõiki
salvestatud informatsiooni topelt.
Kaudsed casting kasutatakse ka võrdlus ettevõtjad, nagu
suurem, väiksem või võrdõiguslikkuse operaator.
Nii saame öelda, kas 5.1 on suurem kui 5, ja me saame
põhjustada tõsi.
Kuna 5 on keskmine, kuid see saab olema enamus float, et
võrrelda ujuki 5.1, me ütleks, et 5.1 on
suurem kui 5,0.
Sama kehtib ütlus kui 2,0 võrdub võrdub 2.
Soovime saada ka tõsi, sest arvuti on valatud
täisarv 2 kuni hõljub ja siis öelda 2,0 võrdub võrdub 2.0,
see on tõsi.
Ära unusta, et me saame ka valatud vahel ints ja tähed,
või ASCII väärtused.
Sümbolite Samuti tuleb vähendada binaarne, mis on, miks sa
saab kergesti konverteerida vahel sümboleid ja nende
ASCII väärtused.
Et rohkem teada saada selle, vaadake meie video ASCII.
Kui te võtate praegu mõtlema, kuidas andmed on salvestatud,
see hakkab tegema palju mõistust.
See on nagu vahe tuul ja tuul.
Andmed on samad, kuid liik on võimalik muuta, kuidas me
tõlgendada.
Minu nimi on Jordaania Jóźwiak, see cs50.