[Powered by Google Translate] JORDAN JOZWIAK: Aina akitoa, kwa maana rahisi, ni njia ya kubadilisha tafsiri ya kompyuta ya baadhi ya data na implicitly au waziwazi kubadilisha data zake aina. Kama vile kubadilisha int kwa kuelea, au kinyume chake. Kuelewa aina akitoa, tunahitaji kuanza na shemu - data aina wenyewe. Katika lugha ya kompyuta kama C, kila vigezo na aina fulani ya data aina kwamba huamua jinsi ya kompyuta, na vivyo hivyo user, anatafsiri kwamba kutofautiana. Namba data aina kama vile int kuelea, muda mrefu, na mara mbili, wote wana sifa zao za kipekee na ni kutumika kwa bayana maadili ya tofauti kati na usahihi. Aina akitoa inaruhusu sisi kuchukua hatua floating idadi kama 3.14 na kupata sehemu kabla decimal, 3 katika kesi hii, na akitoa kwa int. Hebu chukua mfano kutoka lugha ya Kiingereza kwa kifupi mapitio ya aina, na kuona jinsi akitoa aina inaweza kubadilika njia ya sisi kutafsiri kipande cha data. Kwa data, hebu kuchukua alama hapa. Mimi tu rejea mistari haya kwa makini configured kama ishara, lakini kama mtu ambaye anajua lugha ya Kiingereza, wewe mara kutambua kwamba wao ni, kwa kweli, barua. Wewe implicitly kueleweka aina data. Kuangalia hii kamba ya barua tunaweza kuona wawili tofauti ya maneno, kila na maana yake mwenyewe. Kuna nomino, upepo, kama katika upepo unavuma nje. Na kuna kitenzi, upepo, kama katika nahitaji upepo zamu yangu ya analogi. Huu ni mfano kuvutia, kwa sababu tunaweza kuona jinsi ya aina ya kwamba sisi hawawajui data zetu, kama nomino au verb, mabadiliko jinsi tunavyotumia data kwamba - kama upepo neno au upepo. Ingawa kompyuta hajali kuhusu sarufi na sehemu ya hotuba ya Kiingereza, sawa kanuni ya msingi inatumika. Hiyo ni, tunaweza kubadilisha tafsiri ya halisi sawa data kuhifadhiwa katika kumbukumbu kwa kifupi akitoa kwa aina tofauti. Hapa ni ukubwa wa aina ya kawaida juu ya 32-bit mfumo wa uendeshaji. Tuna Char saa 1 int Byte, na kuelea katika ka 4, kwa muda mrefu muda mrefu na mara mbili katika ka 8. Kwa sababu int inachukua hadi ka 4, itachukua up bits 32 wakati ni kuhifadhiwa katika kumbukumbu kama mfululizo binary ya zeros na ndio. Muda mrefu kama variable yetu bado kama int aina, kompyuta daima kubadilisha wale wale na zeros kutoka binary katika idadi ya awali. Hata hivyo, tunaweza kinadharia kutupwa wale 32 bits katika mfululizo wa aina Boolean. Na kisha kompyuta itakuwa hakuna tena kuona idadi, lakini badala ya ukusanyaji wa zeros na ndio. Tunaweza pia kujaribu kusoma data kwamba kama numeric tofauti aina, au hata kama kamba ya herufi nne. Wakati wa kushughulika na idadi katika akitoa, ni lazima kuzingatia jinsi usahihi wa thamani yako itakuwa walioathirika. Kumbuka kwamba usahihi inaweza kukaa sawa, au unaweza kupoteza usahihi, lakini unaweza kamwe kupata usahihi. Hebu kupitia kwa njia tatu ya kawaida kwamba unaweza kupoteza usahihi. Akitoa kuelea kwa int kusababisha truncation wa kila kitu baada ya uhakika decimal, hivyo wewe ni kushoto na namba nzima. Kama sisi kuchukua x kuelea ambayo itakuwa sawa 3.7, tunaweza kutupwa this x variable kwa int kwa kifupi kuandika int katika mabano. Kila mara sisi kutumia muda huu haki hapa, tutaweza kwa ufanisi kutumia thamani tatu kwa sababu tumekuwa truncated kila kitu baada ya uhakika decimal. Tunaweza pia kubadilisha muda mrefu int, ambayo itakuwa vile vile kusababisha hasara ya bits high-utaratibu. muda mrefu inachukua hadi ka 8, au bits 64 katika kumbukumbu. Hivyo wakati sisi kuwatupia int ambayo tu ana ka 4, au 32 bits, sisi ni kimsingi chopping off bits wote kwamba kuwakilisha maadili binary juu. Unaweza pia kutupa mara mbili kwa kuelea, ambayo nitakupa wewe kuelea karibu inawezekana mara mbili bila lazima rounding yake. Sawa na muda wetu kwa muda mrefu kwa uongofu int, hasara katika usahihi ni kwa sababu mbili ina data zaidi. mbili itawawezesha kuhifadhi 53 bits muhimu, takribani 16 muhimu tarakimu. Wakati kuelea tu kuruhusu kuhifadhi 24 muhimu bits, takribani saba muhimu tarakimu. Katika kesi hizi mbili za mwisho, inaweza kuwa na manufaa kwa kufikiria aina akitoa kama resizing picha. Wakati wewe kwenda kutoka kawaida kubwa kwa kawaida ndogo, huwezi kuona mambo kama wazi kwa sababu wewe kupoteza data katika fomu ya saizi. Aina akitoa pia inaweza kusababisha matatizo wakati sisi kutupwa ints kwa inaelea. Tangu ikifungwa kwenye mashine ya 32-bit tu kuwa 24 bits muhimu, hawawezi usahihi kuwakilisha maadili zaidi ya 2 kwa nguvu ya 24, au 16,777,217. Sasa hebu majadiliano juu akitoa wazi na thabiti. Akitoa wazi ni wakati sisi kuandika aina katika mabano kabla ya jina kutofautiana. Kama mfano, kabla ya sisi aliandika int katika mabano kabla yetu kuelea x kutofautiana. Kwa njia hii, sisi kupata thamani int, truncated thamani ya 3.7 - 3. Kinachojitokeza ni wakati akitoa compiler moja kwa moja changes sawa aina kwa aina super, au hufanya baadhi ya aina nyingine ya akitoa bila kuhitaji mtumiaji kuandika yoyote code ya ziada. Kwa mfano, wakati sisi kuongeza 5 na 1.1, maadili yetu tayari kuwa na aina kuhusishwa na wao. 5 ni int, ambapo 1.1 ni kuelea. Ili kuongeza yao, kompyuta Anamfukuza 5 ndani ya kuelea, ambayo ingekuwa kitu sawa kama kuandika 5.0 katika nafasi ya kwanza. Lakini kwa njia hii sisi kusema kuelea 5, au 5.0, pamoja na kile ilikuwa tayari kuelea, 1.1, na kutoka hapo tunaweza kweli kuongeza hizi maadili na kupata thamani 6.1. Akitoa Kinachojitokeza pia inaruhusu sisi hawawajui vigezo ya aina tofauti kwa kila mmoja. Tunaweza daima hawawajui aina chini sahihi katika zaidi sahihi moja. Kwa mfano, kama tuna x mara mbili, na y int - na haya inaweza kuwa na maadili yoyote kwamba sisi akawaweka - tunaweza kusema x sawa y. Kwa sababu mara mbili ana zaidi kuliko usahihi int, hivyo sisi si kupoteza taarifa yoyote. Kwa upande mwingine, ingekuwa siyo lazima kuwa sahihi kusema y sawa x, kwa sababu mbili anaweza kuwa na thamani kubwa kuliko integer. Na hivyo integer wanaweza kuwa na uwezo wa kushikilia wote taarifa iliyohifadhiwa katika mbili. Akitoa Kinachojitokeza ni pia kutumika katika waendeshaji kulinganisha kama kubwa zaidi kuliko, chini ya, au operator usawa. Njia hii tunaweza kusema kama 5.1 ni kubwa kuliko 5, na sisi kupata kusababisha kweli. Kwa sababu ni int 5, lakini itabidi kutupwa kwa kuelea ili kuwa ikilinganishwa na kuelea 5.1, tunatarajia kusema 5.1 ni kubwa kuliko 5.0. Huyo ni kweli na kusema iwapo 2.0 sawa sawa na 2. Tunatarajia pia kupata kweli, kwa sababu kompyuta atamtupia integer 2 kwa kuelea na kisha kusema 2.0 sawa sawa na 2.0, hii ni kweli. Usisahau kwamba tunaweza pia kutupwa kati ya ints na chars, au ASCII maadili. Chars pia haja ya kupunguzwa kwa binary, ambayo ni kwa nini urahisi kubadili kati ya chars na husika yao ASCII maadili. Ili kujifunza zaidi kuhusu hili, angalia video wetu juu ya ASCII. Wakati wewe kuchukua muda kufikiria jinsi data imehifadhiwa, inaanza kufanya mengi ya akili. Ni kama tu tofauti kati ya upepo na upepo. data ni sawa, lakini aina inaweza kubadili jinsi sisi kuifasiri. Jina langu ni Jordan Jozwiak, hii cs50.