1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] JORDAN Jozwiak: Druh odlitek, v nejjednodušším smyslu, je 2 00:00:10,270 --> 00:00:13,300 způsob, jak změnit v počítači výklad některých údajů 3 00:00:13,300 --> 00:00:16,560 implicitně nebo explicitně změnit jeho datový typ. 4 00:00:16,560 --> 00:00:19,940 Jako je například změna typu int na float, nebo naopak. 5 00:00:19,940 --> 00:00:21,550 Chcete-li pochopit, přetypování, musíme 6 00:00:21,550 --> 00:00:22,680 začít se základy - 7 00:00:22,680 --> 00:00:24,140 datové typy samotných. 8 00:00:24,140 --> 00:00:26,960 V počítačových jazycích, jako je C, všechny proměnné mají nějakou 9 00:00:26,960 --> 00:00:29,690 datového typu, který určuje, jak počítač, a stejně tak 10 00:00:29,690 --> 00:00:32,140 uživatel, interpretuje tuto proměnnou. 11 00:00:32,140 --> 00:00:35,160 Numerické datové typy jako int, long long, float a 12 00:00:35,160 --> 00:00:38,110 double, všechny mají své vlastní jedinečné vlastnosti a jsou 13 00:00:38,110 --> 00:00:41,370 používá k určení hodnoty různých rozsahů a preciznost. 14 00:00:41,370 --> 00:00:44,800 Přetypování nám umožní přijmout s pohyblivou desetinnou čárkou čísla jako 15 00:00:44,800 --> 00:00:49,170 3.14 a tu roli před desetinné, 3 v tomto případě, 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 Vezměme si příklad z anglického jazyka pro krátké 18 00:00:53,900 --> 00:00:56,910 přezkoumání typů, a vidět, jak přetypování může změnit 19 00:00:56,910 --> 00:00:59,380 způsob, jakým interpretovat kus dat. 20 00:00:59,380 --> 00:01:05,269 U údajů, pojďme se symboly zde. 21 00:01:05,269 --> 00:01:07,570 Jen jsem se odkazují na tyto pečlivě nastavených zásad jako 22 00:01:07,570 --> 00:01:10,100 symboly, ale jako někdo, kdo zná anglický jazyk, 23 00:01:10,100 --> 00:01:12,750 můžete okamžitě rozpoznat, že jsou ve skutečnosti, dopisy. 24 00:01:12,750 --> 00:01:15,580 Můžete implicitně chápán typ dat. 25 00:01:15,580 --> 00:01:17,620 Při pohledu na tohoto řetězce písmen můžeme vidět dvě 26 00:01:17,620 --> 00:01:20,140 různá slova, každý s vlastním smyslu. 27 00:01:20,140 --> 00:01:25,530 Tam je podstatné jméno, vítr, stejně jako v fouká vítr mimo. 28 00:01:25,530 --> 00:01:28,280 A je tu sloveso, vítr, stejně jako v musím 29 00:01:28,280 --> 00:01:31,410 vítr analogovou hodinky. 30 00:01:31,410 --> 00:01:33,420 To je zajímavý příklad, protože vidíme, 31 00:01:33,420 --> 00:01:36,270 jak typ, který jsme přiřadili našich údajů, ať už jméno nebo 32 00:01:36,270 --> 00:01:39,080 slovesné, změna způsobu užíváme, že údaje - 33 00:01:39,080 --> 00:01:41,730 jako slovo vítr nebo vítr. 34 00:01:41,730 --> 00:01:44,100 Přestože počítač nestará o gramatice a díly 35 00:01:44,100 --> 00:01:47,750 anglické řeči, stejné základní zásada platí. 36 00:01:47,750 --> 00:01:50,290 To znamená, že můžeme změnit výklad přesné 37 00:01:50,290 --> 00:01:53,140 stejná data uložená v paměti jednoduše odlévání do 38 00:01:53,140 --> 00:01:54,576 jiný typ. 39 00:01:54,576 --> 00:01:57,250 Zde jsou velikosti nejběžnějších typů 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, dlouhé 42 00:02:02,070 --> 00:02:04,390 dlouhé a double na 8 bajtů. 43 00:02:04,390 --> 00:02:07,670 Vzhledem k tomu, int zabírá 4 bajty, bude trvat až 32 bitů 44 00:02:07,670 --> 00:02:10,060 když se uloží do paměti jako binární série 45 00:02:10,060 --> 00:02:11,500 nul a jedniček. 46 00:02:11,500 --> 00:02:14,020 Tak dlouho, jak naší proměnné zůstává jako typ int, na 47 00:02:14,020 --> 00:02:16,740 Počítač bude vždy převést ty jedničky a nuly z 48 00:02:16,740 --> 00:02:19,120 Binární do původního počtu. 49 00:02:19,120 --> 00:02:21,270 Nicméně, mohli bychom teoreticky obsazení těch 32 50 00:02:21,270 --> 00:02:23,510 bitů do řady logických typů. 51 00:02:23,510 --> 00:02:26,090 A pak počítač by již vidět číslo, ale 52 00:02:26,090 --> 00:02:28,810 místo kolekce nul a jedniček. 53 00:02:28,810 --> 00:02:31,570 Mohli bychom se také pokusit číst, že údaje jako jiný číselný 54 00:02:31,570 --> 00:02:34,660 psát, nebo dokonce jako řetězec čtyř znaků. 55 00:02:34,660 --> 00:02:37,820 Při práci s čísly v lití, musíte zvážit, jak 56 00:02:37,820 --> 00:02:40,470 přesnost vašeho hodnoty budou ovlivněny. 57 00:02:40,470 --> 00:02:43,240 Mějte na paměti, že přesnost může zůstat stejný, 58 00:02:43,240 --> 00:02:47,150 nebo můžete ztratit přesnost, ale nikdy nemůžete získat přesnost. 59 00:02:47,150 --> 00:02:49,060 Pojďme projít za tři nejběžnější způsoby, které můžete 60 00:02:49,060 --> 00:02:50,400 ztratit přesnost. 61 00:02:50,400 --> 00:02:53,060 Odlévání float na int způsobí zkrácení všeho 62 00:02:53,060 --> 00:02:54,900 za desetinnou čárkou, takže jste odešel 63 00:02:54,900 --> 00:02:55,950 s celkového počtu. 64 00:02:55,950 --> 00:03:02,000 Vezmeme-li float x, který bude rovnat 3,7, můžeme obsazení 65 00:03:02,000 --> 00:03:05,580 tato proměnná x typu int jednoduše psát int v 66 00:03:05,580 --> 00:03:07,050 závorky. 67 00:03:07,050 --> 00:03:10,010 Kdykoli jsme se použít tento termín přímo tady, sejdeme se účinně 68 00:03:10,010 --> 00:03:12,810 používat hodnotu tři, protože jsme zkrácen 69 00:03:12,810 --> 00:03:14,880 vše, co po desetinné čárce. 70 00:03:14,880 --> 00:03:17,210 Můžeme také převést long long na int, která bude 71 00:03:17,210 --> 00:03:20,760 podobně vést ke ztrátě vyššího řádu bitů. 72 00:03:20,760 --> 00:03:23,910 Dlouho, dlouho trvá až 8 bajtů, nebo 64 bitů v paměti. 73 00:03:23,910 --> 00:03:27,050 Takže když jsme se přetypovat na int, který má pouze 4 byty, nebo 32 74 00:03:27,050 --> 00:03:29,820 bity, jsme v podstatě uřízneš všechny bity, které 75 00:03:29,820 --> 00:03:32,420 představují vyšší binární hodnoty. 76 00:03:32,420 --> 00:03:34,690 Dalo by se také obsazen double na float, který vám poskytne 77 00:03:34,690 --> 00:03:37,340 si nejbližší možné plovák do výše dvojnásobku bez 78 00:03:37,340 --> 00:03:39,100 nutně zaokrouhlení to. 79 00:03:39,100 --> 00:03:41,840 Podobně jako naše long long int obrácení, ztráta 80 00:03:41,840 --> 00:03:44,890 přesnost je proto dvojí obsahuje více dat. 81 00:03:44,890 --> 00:03:47,910 Double vám umožní uložit 53 významných bitů, 82 00:03:47,910 --> 00:03:50,650 zhruba 16 platných číslic. 83 00:03:50,650 --> 00:03:53,050 Vzhledem k tomu, plovák pouze vám umožní ukládat 24 84 00:03:53,050 --> 00:03:56,235 bity, zhruba sedm platných číslic. 85 00:03:56,235 --> 00:03:58,700 V těchto posledních dvou případech může být užitečné myslet na 86 00:03:58,700 --> 00:04:01,200 přetypování jako změnu velikosti fotografií. 87 00:04:01,200 --> 00:04:03,860 Když jdete z velké velikosti na malé velikosti, nemůžete vidět 88 00:04:03,860 --> 00:04:05,600 věci tak jasně, protože jste ztratili dat 89 00:04:05,600 --> 00:04:07,530 ve formě obrazových bodů. 90 00:04:07,530 --> 00:04:09,270 Přetypování může také způsobit potíže, když jsme 91 00:04:09,270 --> 00:04:11,050 obsazení ints na plováky. 92 00:04:11,050 --> 00:04:13,920 Vzhledem k tomu, plave na 32-bit stroje pouze 24 93 00:04:13,920 --> 00:04:16,959 bity, nemohou přesně reprezentují hodnoty 94 00:04:16,959 --> 00:04:22,750 nad 2 k síle 24, nebo 16777217. 95 00:04:22,750 --> 00:04:25,540 Nyní pojďme hovořit o explicitní a implicitní lití. 96 00:04:25,540 --> 00:04:28,000 Explicitní obsazení je, když napíšeme typ v závorce 97 00:04:28,000 --> 00:04:29,430 před název proměnné. 98 00:04:29,430 --> 00:04:33,100 Jako příklad, než jsme napsali int v závorkách před naším 99 00:04:33,100 --> 00:04:35,640 float proměnné x. 100 00:04:35,640 --> 00:04:37,200 Tímto způsobem, dostaneme int hodnotu, 101 00:04:37,200 --> 00:04:38,593 okleštěné hodnoty 3,7 - 102 00:04:38,593 --> 00:04:40,370 3. 103 00:04:40,370 --> 00:04:42,970 Implicitní obsazení je, když kompilátor automaticky změní 104 00:04:42,970 --> 00:04:46,340 podobné typy na super typ, nebo vykonává nějaký jiný druh 105 00:04:46,340 --> 00:04:48,310 odlévání bez nutnosti, aby uživatel zapsat 106 00:04:48,310 --> 00:04:49,720 žádné další kód. 107 00:04:49,720 --> 00:04:53,550 Například, když přidáme 5 a 1,1, naše hodnoty již 108 00:04:53,550 --> 00:04:55,680 Typy jsou s nimi spojeny. 109 00:04:55,680 --> 00:04:59,480 5 je int, zatímco 1.1 je float. 110 00:04:59,480 --> 00:05:02,390 Aby bylo možné přidat, počítač vrhá 5 do plováku, 111 00:05:02,390 --> 00:05:04,530 které by byly totéž jako psaní 5,0 v 112 00:05:04,530 --> 00:05:06,476 první místo. 113 00:05:06,476 --> 00:05:13,210 Ale takhle říci, float 5, nebo 5,0, plus to, co bylo již 114 00:05:13,210 --> 00:05:16,960 float, 1,1, a odtud můžeme skutečně přidat tyto 115 00:05:16,960 --> 00:05:18,640 hodnoty a získat hodnotu 6,1. 116 00:05:21,170 --> 00:05:23,500 Implicitní obsazení nám také umožňuje přiřadit proměnné 117 00:05:23,500 --> 00:05:25,590 různé druhy navzájem. 118 00:05:25,590 --> 00:05:28,110 Můžeme vždy přiřadit méně přesný typ do více 119 00:05:28,110 --> 00:05:29,250 přesné jedna. 120 00:05:29,250 --> 00:05:37,060 Například, jestliže my máme double x, a int y - 121 00:05:37,060 --> 00:05:40,120 a mohly by mít všechny hodnoty, které jsme si stanovili jim - 122 00:05:40,120 --> 00:05:43,560 můžeme říci, x se rovná y. 123 00:05:43,560 --> 00:05:46,340 Vzhledem k tomu, double má více přesnost než typ int, takže jsme 124 00:05:46,340 --> 00:05:48,380 neztratí žádné informace. 125 00:05:48,380 --> 00:05:50,420 Na druhé straně, by to nutně správné říci 126 00:05:50,420 --> 00:05:54,060 y se rovná x, protože dvojitý může mít větší hodnotu než 127 00:05:54,060 --> 00:05:55,220 integer. 128 00:05:55,220 --> 00:05:57,420 A tak celé číslo nemusí být schopen držet všechny 129 00:05:57,420 --> 00:05:59,560 Informace uložené v double. 130 00:05:59,560 --> 00:06:02,610 Implicitní obsazení je také použit v relační operátory, jako 131 00:06:02,610 --> 00:06:06,410 větší než, menší než nebo operátor rovnosti. 132 00:06:06,410 --> 00:06:13,050 Tímto způsobem můžeme říct, jestli 5,1 je větší než 5, a dostaneme 133 00:06:13,050 --> 00:06:14,750 dojít pravda. 134 00:06:14,750 --> 00:06:18,470 Vzhledem k tomu, 5 je int, ale bude to být přetypovat na float, aby se 135 00:06:18,470 --> 00:06:22,090 být ve srovnání s plovákem 5,1, bychom řekli, 5,1, je 136 00:06:22,090 --> 00:06:24,550 větší než 5,0. 137 00:06:24,550 --> 00:06:31,320 Totéž platí pro ostatní, pokud 2,0 rovná rovná 2. 138 00:06:31,320 --> 00:06:34,190 Rádi bychom také získat pravda, protože počítač bude obsazení 139 00:06:34,190 --> 00:06:39,750 integer 2 plavat a pak říci 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 Nezapomeňte, že můžeme také obsadit mezi ints a připaluje, 142 00:06:44,180 --> 00:06:46,350 nebo ASCII hodnoty. 143 00:06:46,350 --> 00:06:49,690 Znaky také třeba snížit na binární, což je důvod, proč 144 00:06:49,690 --> 00:06:51,920 můžete snadno převádět mezi znaky a jejich příslušných 145 00:06:51,920 --> 00:06:53,260 ASCII hodnoty. 146 00:06:53,260 --> 00:06:56,180 Chcete-li se dozvědět více o tom, podívejte se na naše videa na ASCII. 147 00:06:56,180 --> 00:06:58,080 Když budete mít chvilku přemýšlet o tom, jak je uložen dat, 148 00:06:58,080 --> 00:06:59,990 to začne dávat hodně smysl. 149 00:06:59,990 --> 00:07:02,790 Je to jako rozdíl mezi větrem a vítr. 150 00:07:02,790 --> 00:07:05,490 Tyto údaje jsou stejné, ale typ může měnit jak 151 00:07:05,490 --> 00:07:06,720 interpretovat. 152 00:07:06,720 --> 00:07:10,430 Mé jméno je Jordan Jozwiak, to cs50.