1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] JORDAN Jozwiak: Druh odliatok, v najjednoduchšom zmysle, je 2 00:00:10,270 --> 00:00:13,300 spôsob, ako zmeniť v počítači výklad niektorých údajov 3 00:00:13,300 --> 00:00:16,560 implicitne alebo explicitne zmeniť jeho dátový typ. 4 00:00:16,560 --> 00:00:19,940 Ako je napríklad zmena typu int na float, alebo naopak. 5 00:00:19,940 --> 00:00:21,550 Aby sme pochopili pretypovanie, musíme 6 00:00:21,550 --> 00:00:22,680 začať sa základy - 7 00:00:22,680 --> 00:00:24,140 dátové typy samotných. 8 00:00:24,140 --> 00:00:26,960 V počítačových jazykoch, ako je C, všetky premenné majú nejakú 9 00:00:26,960 --> 00:00:29,690 dátového typu, ktorý určuje, ako počítač, a rovnako tak 10 00:00:29,690 --> 00:00:32,140 užívateľ, interpretuje túto premennú. 11 00:00:32,140 --> 00:00:35,160 Numerické dátové typy ako int, long long, float a 12 00:00:35,160 --> 00:00:38,110 double, všetky majú svoje vlastné jedinečné vlastnosti a sú 13 00:00:38,110 --> 00:00:41,370 používa na určenie hodnoty rôznych rozsahov a precíznosť. 14 00:00:41,370 --> 00:00:44,800 Pretypovanie nám umožní prijať s pohyblivou desatinnou čiarkou čísla ako 15 00:00:44,800 --> 00:00:49,170 3,14 a tú úlohu pred desatinnou čiarkou, 3 v tomto prípade, 16 00:00:49,170 --> 00:00:51,590 tým, že obsadí to na int. 17 00:00:51,590 --> 00:00:53,900 Zoberme si príklad z anglického jazyka pre krátke 18 00:00:53,900 --> 00:00:56,910 preskúmanie typov, a vidieť, ako pretypovanie môže zmeniť 19 00:00:56,910 --> 00:00:59,380 spôsob, akým interpretovať kus dát. 20 00:00:59,380 --> 00:01:05,269 Pri údajoch, poďme sa symboly tu. 21 00:01:05,269 --> 00:01:07,570 Len som sa odvolávajú na tieto starostlivo nastavených zásad ako 22 00:01:07,570 --> 00:01:10,100 symboly, ale ako niekto, kto pozná anglický jazyk, 23 00:01:10,100 --> 00:01:12,750 môžete okamžite rozpoznať, že sú v skutočnosti, listy. 24 00:01:12,750 --> 00:01:15,580 Môžete implicitne chápaný typ dát. 25 00:01:15,580 --> 00:01:17,620 Pri pohľade na tohto reťazca písmen môžeme vidieť dve 26 00:01:17,620 --> 00:01:20,140 rôzne slová, každý s vlastným zmysle. 27 00:01:20,140 --> 00:01:25,530 Tam je podstatné meno, vietor, rovnako ako v fúka vietor mimo. 28 00:01:25,530 --> 00:01:28,280 A je tu sloveso, vietor, rovnako ako v musím 29 00:01:28,280 --> 00:01:31,410 vietor analógovú hodinky. 30 00:01:31,410 --> 00:01:33,420 To je zaujímavý príklad, pretože vidíme, 31 00:01:33,420 --> 00:01:36,270 ako typ, ktorý sme priradili do našich dát, či už meno alebo 32 00:01:36,270 --> 00:01:39,080 slovesné, zmena spôsobu užívame, že údaje - 33 00:01:39,080 --> 00:01:41,730 ako slovo vietor alebo vietor. 34 00:01:41,730 --> 00:01:44,100 Hoci počítač nestará o gramatike a diely 35 00:01:44,100 --> 00:01:47,750 anglickej reči, rovnaké základné zásada platí. 36 00:01:47,750 --> 00:01:50,290 To znamená, že môžeme zmeniť výklad presný 37 00:01:50,290 --> 00:01:53,140 rovnaké dáta uložené v pamäti jednoducho odlievanie do 38 00:01:53,140 --> 00:01:54,576 iný typ. 39 00:01:54,576 --> 00:01:57,250 Tu sú veľkosti najbežnejších typov na 32-bit 40 00:01:57,250 --> 00:01:58,340 operačný systém. 41 00:01:58,340 --> 00:02:02,070 Máme char na 1 byte, int a float na 4 bajty, dlhé 42 00:02:02,070 --> 00:02:04,390 dlhé a double na 8 bajtov. 43 00:02:04,390 --> 00:02:07,670 Vzhľadom k tomu, int zaberá 4 bajty, bude trvať až 32 bitov 44 00:02:07,670 --> 00:02:10,060 keď sa uloží do pamäte ako binárny série 45 00:02:10,060 --> 00:02:11,500 núl a jedničiek. 46 00:02:11,500 --> 00:02:14,020 Tak dlho, ako našej premenné zostáva ako typ int, na 47 00:02:14,020 --> 00:02:16,740 Počítač bude vždy previesť tie jednotky a nuly z 48 00:02:16,740 --> 00:02:19,120 Binárne do pôvodného počtu. 49 00:02:19,120 --> 00:02:21,270 Avšak, mohli by sme teoreticky obsadenie tých 32 50 00:02:21,270 --> 00:02:23,510 bitov do radu logických typov. 51 00:02:23,510 --> 00:02:26,090 A potom počítač by už vidieť číslo, ale 52 00:02:26,090 --> 00:02:28,810 miesto kolekcie núl a jedničiek. 53 00:02:28,810 --> 00:02:31,570 Mohli by sme sa tiež pokúsiť čítať, že údaje ako iný číselný 54 00:02:31,570 --> 00:02:34,660 písať, alebo dokonca ako reťazec štyroch znakov. 55 00:02:34,660 --> 00:02:37,820 Pri práci s číslami v liatie, musíte zvážiť, ako 56 00:02:37,820 --> 00:02:40,470 presnosť vášho hodnoty budú ovplyvnené. 57 00:02:40,470 --> 00:02:43,240 Majte na pamäti, že presnosť môže zostať rovnaký, 58 00:02:43,240 --> 00:02:47,150 alebo môžete stratiť presnosť, ale nikdy nemôžete získať presnosť. 59 00:02:47,150 --> 00:02:49,060 Poďme prejsť za tri najbežnejšie spôsoby, ktoré môžete 60 00:02:49,060 --> 00:02:50,400 stratiť presnosť. 61 00:02:50,400 --> 00:02:53,060 Odlievanie float na int spôsobí skrátenie všetkého 62 00:02:53,060 --> 00:02:54,900 za desatinnou čiarkou, takže ste odišiel 63 00:02:54,900 --> 00:02:55,950 s celkového počtu. 64 00:02:55,950 --> 00:03:02,000 Ak vezmeme float x, ktorý bude rovnať 3,7, môžeme obsadenie 65 00:03:02,000 --> 00:03:05,580 táto premenná x typu int jednoducho písať int v 66 00:03:05,580 --> 00:03:07,050 zátvorky. 67 00:03:07,050 --> 00:03:10,010 Kedykoľvek sme sa použiť tento termín priamo tu, zídeme sa účinne 68 00:03:10,010 --> 00:03:12,810 používať hodnotu tri, pretože sme skrátený 69 00:03:12,810 --> 00:03:14,880 všetko za desatinnou čiarkou. 70 00:03:14,880 --> 00:03:17,210 Môžeme tiež previesť long long na int, ktorá bude 71 00:03:17,210 --> 00:03:20,760 podobne viesť k strate vyššieho rádu bitov. 72 00:03:20,760 --> 00:03:23,910 Dlho, dlho trvá až 8 bajtov, alebo 64 bitov v pamäti. 73 00:03:23,910 --> 00:03:27,050 Takže keď sme sa přetypovat na int, ktorý má len 4 byty, alebo 32 74 00:03:27,050 --> 00:03:29,820 bity, sme v podstate uřízneš všetky bity, ktoré 75 00:03:29,820 --> 00:03:32,420 predstavujú vyššiu binárne hodnoty. 76 00:03:32,420 --> 00:03:34,690 Dalo by sa tiež obsadený double na float, ktorý vám poskytne 77 00:03:34,690 --> 00:03:37,340 si najbližšie možné plavák do výšky dvojnásobku bez 78 00:03:37,340 --> 00:03:39,100 nutne zaokrúhlenia to. 79 00:03:39,100 --> 00:03:41,840 Podobne ako naše long long int konverzie, strata 80 00:03:41,840 --> 00:03:44,890 presnosť je preto dvojaký obsahuje viac dát. 81 00:03:44,890 --> 00:03:47,910 Double vám umožní uložiť 53 významných bitov, 82 00:03:47,910 --> 00:03:50,650 približne 16 platných číslic. 83 00:03:50,650 --> 00:03:53,050 Vzhľadom k tomu, plavák iba vám umožní ukladať 24 84 00:03:53,050 --> 00:03:56,235 bity, zhruba sedem platných číslic. 85 00:03:56,235 --> 00:03:58,700 V týchto posledných dvoch prípadoch môže byť užitočné myslieť na 86 00:03:58,700 --> 00:04:01,200 pretypovanie ako zmenu veľkosti fotografií. 87 00:04:01,200 --> 00:04:03,860 Keď idete z veľkej veľkosti na malé veľkosti, nemôžete vidieť 88 00:04:03,860 --> 00:04:05,600 veci tak jasne, pretože ste stratili dát 89 00:04:05,600 --> 00:04:07,530 vo forme obrazových bodov. 90 00:04:07,530 --> 00:04:09,270 Pretypovanie môže tiež spôsobiť problémy, keď sme 91 00:04:09,270 --> 00:04:11,050 obsadenie ints na plaváky. 92 00:04:11,050 --> 00:04:13,920 Vzhľadom k tomu, pláva na 32-bit stroje iba 24 93 00:04:13,920 --> 00:04:16,959 bity, nemôžu presne reprezentujú hodnoty 94 00:04:16,959 --> 00:04:22,750 nad 2 k sile 24, alebo 16777217. 95 00:04:22,750 --> 00:04:25,540 Teraz poďme hovoriť o explicitné a implicitné liatie. 96 00:04:25,540 --> 00:04:28,000 Explicitné obsadenie je, keď napíšeme typ v zátvorke 97 00:04:28,000 --> 00:04:29,430 pred názov premennej. 98 00:04:29,430 --> 00:04:33,100 Ako príklad, ako sme napísali int v zátvorkách pred naším 99 00:04:33,100 --> 00:04:35,640 float premennej x. 100 00:04:35,640 --> 00:04:37,200 Týmto spôsobom, dostaneme int hodnotu, 101 00:04:37,200 --> 00:04:38,593 oklieštenej 3,7 - 102 00:04:38,593 --> 00:04:40,370 3. 103 00:04:40,370 --> 00:04:42,970 Implicitná obsadenie je, keď kompilátor automaticky zmení 104 00:04:42,970 --> 00:04:46,340 podobné typy na super typ, alebo vykonáva nejaký iný druh 105 00:04:46,340 --> 00:04:48,310 odlievanie bez nutnosti, aby užívateľ zapísať 106 00:04:48,310 --> 00:04:49,720 žiadne ďalšie kód. 107 00:04:49,720 --> 00:04:53,550 Napríklad, keď pridáme 5 a 1,1, naše hodnoty už 108 00:04:53,550 --> 00:04:55,680 Typy sú s nimi spojené. 109 00:04:55,680 --> 00:04:59,480 Na 5 je int, zatiaľ čo 1.1 je float. 110 00:04:59,480 --> 00:05:02,390 Aby bolo možné pridať, počítač vrhá 5 do plaváka, 111 00:05:02,390 --> 00:05:04,530 ktoré by boli rovnaké ako písanie 5,0 v 112 00:05:04,530 --> 00:05:06,476 prvé miesto. 113 00:05:06,476 --> 00:05:13,210 Ale takto povedať, float 5, alebo 5,0, plus to, čo bolo už 114 00:05:13,210 --> 00:05:16,960 plavák, 1,1, a odtiaľ môžeme skutočne pridať tieto 115 00:05:16,960 --> 00:05:18,640 hodnoty a získať hodnotu 6,1. 116 00:05:21,170 --> 00:05:23,500 Implicitná obsadenie nám tiež umožňuje priradiť premenné 117 00:05:23,500 --> 00:05:25,590 rôzne druhy navzájom. 118 00:05:25,590 --> 00:05:28,110 Môžeme vždy priradiť menej presný typ do viac 119 00:05:28,110 --> 00:05:29,250 presné jedna. 120 00:05:29,250 --> 00:05:37,060 Napríklad, ak my máme double x, a int y - 121 00:05:37,060 --> 00:05:40,120 a mohli by mať všetky hodnoty, ktoré sme si stanovili im - 122 00:05:40,120 --> 00:05:43,560 môžeme povedať, x sa rovná y. 123 00:05:43,560 --> 00:05:46,340 Vzhľadom k tomu, double má viac presnosť ako typ int, takže sme 124 00:05:46,340 --> 00:05:48,380 nestratí žiadne informácie. 125 00:05:48,380 --> 00:05:50,420 Na druhej strane, by to nevyhnutne správne povedať 126 00:05:50,420 --> 00:05:54,060 y sa rovná x, pretože dvojitý môže mať väčšiu hodnotu než 127 00:05:54,060 --> 00:05:55,220 celočíselná. 128 00:05:55,220 --> 00:05:57,420 A tak celé číslo nemusí byť schopný držať všetky 129 00:05:57,420 --> 00:05:59,560 Informácie uložené v double. 130 00:05:59,560 --> 00:06:02,610 Implicitná obsadenie je tiež použitý v relačnej operátormi, ako 131 00:06:02,610 --> 00:06:06,410 väčšie ako, menšie ako alebo operátor rovnosti. 132 00:06:06,410 --> 00:06:13,050 Týmto spôsobom môžeme povedať, či 5,1 je väčšia ako 5, a dostaneme 133 00:06:13,050 --> 00:06:14,750 dôjsť pravda. 134 00:06:14,750 --> 00:06:18,470 Vzhľadom k tomu, 5 je int, ale bude to byť přetypovat na float, aby sa 135 00:06:18,470 --> 00:06:22,090 byť v porovnaní s plavákom 5,1, by sme povedali, 5,1, je 136 00:06:22,090 --> 00:06:24,550 väčší ako 5,0. 137 00:06:24,550 --> 00:06:31,320 To isté platí pre ostatné, ak 2,0 rovná rovná 2. 138 00:06:31,320 --> 00:06:34,190 Radi by sme tiež získať pravdivé, pretože počítač bude obsadenie 139 00:06:34,190 --> 00:06:39,750 integer 2 plávať a potom povedať 2,0 rovná rovná 2,0, 140 00:06:39,750 --> 00:06:41,660 je to pravda. 141 00:06:41,660 --> 00:06:44,180 Nezabudnite, že môžeme tiež obsadiť medzi ints a pripaľuje, 142 00:06:44,180 --> 00:06:46,350 alebo ASCII hodnoty. 143 00:06:46,350 --> 00:06:49,690 Znaky tiež potrebné znížiť na binárne, čo je dôvod, prečo 144 00:06:49,690 --> 00:06:51,920 môžete ľahko prevádzať medzi znakmi a ich príslušných 145 00:06:51,920 --> 00:06:53,260 ASCII hodnoty. 146 00:06:53,260 --> 00:06:56,180 Ak sa chcete dozvedieť viac o tom, pozrite sa na naše videá na ASCII. 147 00:06:56,180 --> 00:06:58,080 Keď budete mať chvíľku premýšľať o tom, ako je uložený dát, 148 00:06:58,080 --> 00:06:59,990 začína robiť veľa zmysel. 149 00:06:59,990 --> 00:07:02,790 Je to ako rozdiel medzi vetrom a vietor. 150 00:07:02,790 --> 00:07:05,490 Tieto údaje sú rovnaké, ale typ môže meniť ako 151 00:07:05,490 --> 00:07:06,720 interpretovať. 152 00:07:06,720 --> 00:07:10,430 Moje meno je Jordan Jozwiak, to cs50.