[Powered by Google Translate] JORDAN JOZWIAK: Type steypu, í einföldustu merkingu, er
leið til að breyta túlkun a tölva 'af einhverjum gögnum með
beint eða óbeint að breyta gögn tegund þess.
Svo sem eins og að breyta við int að fljóta, eða öfugt.
Til að skilja tegund steypu þurfum við að
byrja með grunnatriði -
gagnatög sjálfir.
Í tungumálum tölva eins og C, allir breytur einhverskonar
gögn gerð sem ákvarðar hvernig tölva, og sömuleiðis
notandi, túlkar þá breytu.
Töluleg gögn tegundir eins og int, langur langur, fljóta og
tvöfaldur, allir hafa sinn einstaka þeirra eiginleika og eru
notað til að skilgreina gildi mismunandi svið og nákvæmni.
Type steypu gerir okkur kleift að taka fleytitölu númer eins og
3.14 og fá hluti fyrir tugabrot, 3 í þessu tilfelli,
af steypu það heiltala.
Við skulum taka dæmi af ensku fyrir stutt
endurskoða gerðir, og til að sjá hvernig gerð steypu getur breyst
hvernig við túlka a stykki af gögn.
Fyrir gögn, við skulum taka tákn hér.
Ég vísa bara til þessa vel uppsettu línur sem
tákn, en eins og einhver sem þekkir ensku,
þú kannast strax að þeir eru í raun, bréf.
Þú skilja óbeint gögn tegund.
Skoða þetta band af bréfum sem við getum séð tvær
mismunandi orð, hvert með eigin skilningi hennar.
Það er nafnorð, vindur, eins og í vindi höggum utan.
Og það er sögnin, vindur, eins og ég þarf að
vindur hliðstæða úrið mitt.
Þetta er áhugavert dæmi, vegna þess að við getum séð
hvernig gerð sem við gefum okkar gögn, hvort sem nafnorð eða
sögn, breytingar hvernig við notum þessi gögn -
sem orðið vindi eða vindur.
Þó að tölva er ekki sama um málfræði og hlutar
á ensku ræðu, sömu undirstöðu lögmál gildir.
Það er, getum við breytt túlkun nákvæmlega
sömu gögn sem eru geymd í minni með steypu einfaldlega það til a
mismunandi gerð.
Hér eru stærðir af algengustu tegundum á a 32-bita
stýrikerfi.
Við höfum bleikju á 1 bæti, int og fljóta á 4 bytes, A Long
langur og tvöfalda á 8 bæti.
Vegna int tekur upp 4 bæti, mun það taka upp 32 bita
þegar það er geymt í minni sem tvöfaldur röð
af núllum og sjálfur.
Svo lengi sem breytu okkar enn sem gerð INT, sem
tölva mun alltaf breyta þeim sjálfur og núll frá
tvöfaldur í upprunalegu númer.
Hins vegar gætum við fræðilega kastað þeim 32
bitar í röð Boolean gerðum.
Og þá tölvan mun aldrei framar sjá númer, en
stað safn af núllum og sjálfur.
Við gætum líka reynt að lesa þessi gögn sem annar tölustafir
tegund, eða jafnvel eins og a band af fjórum stöfum.
Þegar fjallað með númerum í steypu, verður þú að íhuga hvernig
nákvæmni gildi munu verða fyrir áhrifum.
Hafðu í huga að nákvæmni geta vera sú sama,
eða þú getur missa nákvæmni, en þú getur aldrei fá nákvæmni.
Við skulum fara í gegnum fyrir þremur algengustu leiðir sem hægt
missa nákvæmni.
Kasta fljóta að heiltala mun valda truncation af öllu
eftir kommu, svo þú ert vinstri
með heilu tölu.
Ef við tökum fljóta x sem jafnan 3,7, getum við rekið
breytu x til INT því að skrifa einfaldlega int í
sviga.
Alltaf þegar við notum þetta orð hérna, munum við í raun
vera með gildi þremur vegna þess að við höfum stytt
allt eftir kommu.
Við getum einnig umbreyta fyrir lengi að heiltala, sem mun
álíka leiða til tap af hár-röð bita.
A langur langur tekur upp 8 bæti eða 64 bita í minni.
Svo þegar við kastaði hann til INT sem aðeins hefur 4 bæti, eða 32
bits, við erum í raun chopping burt alla bita að
tákna hærri tvöfaldur gildi.
Þú getur einnig kastað tvöfalt að fljóta, sem gefa
þú næst hægt fljóta í tveggja manna herbergi án
endilega dregið það.
Líkur til lengi lengi okkar til int viðskipti, tap á
nákvæmni er vegna þess að tvöfalda inniheldur fleiri gögn.
A tvöfaldur mun leyfa þér að geyma 53 verulega bita,
u.þ.b. 16 veruleg tölustafir.
Þar sem fljóta mun aðeins leyfa þér að geyma 24
verulegar bits, u.þ.b. sjö verulegar tölustafir.
Í þessum tveimur síðustu tilvikum getur verið gagnlegt að hugsa um
gerð steypu sem resizing myndir.
Þegar þú ferð af stórum stærð í litlu stærð, getur þú ekki séð
hlutina eins greinilega vegna þess að þú tapað gögnum
í formi punkta.
Type steypu getur einnig valdið vandræðum þegar við
kastað ints að fljóta.
Þar flýtur um á 32-bita vél hefur aðeins 24
veruleg bits, geta þeir ekki nákvæmlega tákna gildi
rúmlega 2 á vald 24, eða 16777217.
Nú skulum tala um skýr og óbeina steypu.
Skýr steypu er þegar við skrifa tegund í sviga
fyrir breytu nafn.
Sem dæmi má nefna að áður en við skrifuðum int í sviga fyrir okkar
fljóta breytu x.
Á þennan hátt, fá við int gildi,
styttu verðmæti 3,7 -
3.
Óbeina steypu er þegar þýðandinn sjálfkrafa
svipaðar tegundir til frábær tegund, eða framkvæma einhver önnur tegund af
steypu án þess að krefjast þess að notandi til að skrifa
allir viðbótar kóða.
Til dæmis, þegar við bætum 5 og 1,1, hafa gildi okkar þegar
gerðir í tengslum við þá.
The 5 er int, en 1,1 er fljóta.
Til að bæta þeim, tölvan kastar 5 í flot,
sem hefði verið það sama og að skrifa 5,0 í
fyrsta sæti.
En þessi leið við að segja fljóta 5, eða 5,0, plús hvað var þegar
a fljóta, 1,1, og þaðan getum við í raun að bæta þessum
gildi og fá verðmæti 6,1.
Óbeina steypu einnig leyfa okkur að úthluta breytum á
mismunandi gerðir við hvert annað.
Við getum alltaf úthluta minna nákvæmari gerð í meira
nákvæmlega einn.
Til dæmis, ef við höfum tvöfalt x, og int y -
og þetta gæti hafa allir gildi sem við setjum þá til -
við getum sagt x er jafnt y.
Vegna þess að tvöfaldur hefur meiri nákvæmni en heiltala, þannig að við
ekki missa neinar upplýsingar.
Á hinn bóginn, það vildi ekki endilega að vera rétt að segja
Y jafngildir x, því tvöfaldur gæti hafa stærri gildi en
í heiltölu.
Og svo heiltölu might ekki vera fær um að halda öllum
upplýsingar sem geymdar eru í tvöfalt.
Óbeina steypu er einnig notað í samanburði rekstraraðila eins
meira en, minna en, eða jöfn rekstraraðila.
Þannig að við getum sagt ef 5,1 er meira en 5, og við fá
leiða satt.
Vegna 5 er int, en það mun verða varpað til flot í því skyni að
verið miðað við fljóta 5.1, viljum við segja að 5,1 sé
meiri en 5,0.
Sama gildir með að segja hvort 2,0 jafngildir jafngildir 2.
Við viljum einnig fá satt, vegna þess að tölvan mun kastaði
heiltala 2 að fljóta og þá segja 2,0 jafngildir jafngildir 2,0,
þetta er satt.
Ekki gleyma því að við getum líka kastað á milli ints og chars,
eða ASCII gildi.
Chars þarf einnig að minnka tvöfaldur, sem er hvers vegna þú
geta auðveldlega umbreyta á milli chars og viðkomandi þeirra
ASCII gildi.
Til að læra meira um þetta, skrá sig út vídeó okkar á ASCII.
Þegar þú taka a augnablik til að hugsa um hvernig gögn er geymd,
það byrjar að gera mikið af skilningi.
Það er bara eins og munurinn á milli vindi og vindur.
Gögnin eru þau sömu, en tegund getur breytt því hvernig við
túlka það.
Ég heiti Jordan Jozwiak þetta cs50.