1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] JORDAN JOZWIAK: Tip litje, na najpreprostejši smislu, 2 00:00:10,270 --> 00:00:13,300 način spremeniti razlage računalnika nekaterih podatkov, ki jih 3 00:00:13,300 --> 00:00:16,560 implicitno ali eksplicitno spremenilo njeno vrsto podatkov. 4 00:00:16,560 --> 00:00:19,940 Tako kot spreminjanje int v float ali obratno. 5 00:00:19,940 --> 00:00:21,550 Da bi razumeli vrsto litje, moramo 6 00:00:21,550 --> 00:00:22,680 začeti z osnovami - 7 00:00:22,680 --> 00:00:24,140 Vrste podatkov samih. 8 00:00:24,140 --> 00:00:26,960 V računalniških jezikih, kot so C, vse spremenljivke neke vrste 9 00:00:26,960 --> 00:00:29,690 vrste podatkov, ki določa, kako računalnik, in prav tako 10 00:00:29,690 --> 00:00:32,140 uporabnik, razlaga, da je spremenljivka. 11 00:00:32,140 --> 00:00:35,160 Numerične vrste podatkov, kot so int, dolgo dolgo, float in 12 00:00:35,160 --> 00:00:38,110 dvojno, vsi imajo svoje edinstvene značilnosti in so 13 00:00:38,110 --> 00:00:41,370 uporablja za določitev vrednosti različnih obdobij in natančnosti. 14 00:00:41,370 --> 00:00:44,800 Pretvorba tipov nam omogoča, da s spremenljivo število točk kot 15 00:00:44,800 --> 00:00:49,170 3,14 in dobil vlogo pred decimalko, 3 v tem primeru, 16 00:00:49,170 --> 00:00:51,590 da ga ulitkov notr. 17 00:00:51,590 --> 00:00:53,900 Vzemimo primer iz angleškega jezika za kratek 18 00:00:53,900 --> 00:00:56,910 pregled tipov, in ugotoviti, kako lahko spremenite vrsto litje 19 00:00:56,910 --> 00:00:59,380 način, kako interpretirati podatek. 20 00:00:59,380 --> 00:01:05,269 Za podatke, vzemimo simbole tukaj. 21 00:01:05,269 --> 00:01:07,570 Pravkar sem se nanašajo na te skrbno nastavljen linije, 22 00:01:07,570 --> 00:01:10,100 simboli, ampak kot nekoga, ki pozna angleški jezik, 23 00:01:10,100 --> 00:01:12,750 boste takoj prepoznali, da gre v resnici črke. 24 00:01:12,750 --> 00:01:15,580 Ti implicitno razume vrsto podatkov. 25 00:01:15,580 --> 00:01:17,620 Če pogledamo na to niza črk lahko vidimo, 2 26 00:01:17,620 --> 00:01:20,140 različnih besed, vsaka s svojim smislu. 27 00:01:20,140 --> 00:01:25,530 Tam je samostalnik, veter, kot veter piha zunaj. 28 00:01:25,530 --> 00:01:28,280 In tam je glagol, veter, kot da moram 29 00:01:28,280 --> 00:01:31,410 zaključi svojo analogno uro. 30 00:01:31,410 --> 00:01:33,420 To je zanimiv primer, saj lahko vidimo, 31 00:01:33,420 --> 00:01:36,270 kako je tip, ki se prenesejo na naše podatke, ali je samostalnik ali 32 00:01:36,270 --> 00:01:39,080 glagol, spremembe, kako jih uporabljamo, da so podatki, - 33 00:01:39,080 --> 00:01:41,730 kot beseda veter ali veter. 34 00:01:41,730 --> 00:01:44,100 Čeprav je računalnik ne zanima slovnice in deli 35 00:01:44,100 --> 00:01:47,750 angleškega govora, enake osnovne načelo. 36 00:01:47,750 --> 00:01:50,290 To pomeni, da lahko spremenimo razlago natančnega 37 00:01:50,290 --> 00:01:53,140 Enake podatke, shranjene v pomnilniku, ga preprosto ulitkov 38 00:01:53,140 --> 00:01:54,576 drugačen tip. 39 00:01:54,576 --> 00:01:57,250 Tukaj so velikosti od najbolj pogostih vrst na 32-bitni 40 00:01:57,250 --> 00:01:58,340 operacijski sistem. 41 00:01:58,340 --> 00:02:02,070 Imamo char na 1 byte, int in lopatico na 4 bajte, dolgo 42 00:02:02,070 --> 00:02:04,390 dolgo in dvojni po 8 bajtov. 43 00:02:04,390 --> 00:02:07,670 Ker int zasede 4 bajte, bo trajalo do 32 bitov 44 00:02:07,670 --> 00:02:10,060 ko je v spominu kot binarni niz 45 00:02:10,060 --> 00:02:11,500 ničel in enic. 46 00:02:11,500 --> 00:02:14,020 Dokler naši spremenljivko ostaja tipa int, na 47 00:02:14,020 --> 00:02:16,740 Računalnik bo vedno spremeniti te tiste ničle iz 48 00:02:16,740 --> 00:02:19,120 binarni v prvotno število. 49 00:02:19,120 --> 00:02:21,270 Vendar pa bi lahko teoretično oddal tistih 32 50 00:02:21,270 --> 00:02:23,510 bitov v nizu logičnih tipov. 51 00:02:23,510 --> 00:02:26,090 In potem bi se računalnik ne vidim več, vendar 52 00:02:26,090 --> 00:02:28,810 Namesto zbirka ničel in enic. 53 00:02:28,810 --> 00:02:31,570 Lahko bi tudi poskusite prebrati, da so podatki različni numerični 54 00:02:31,570 --> 00:02:34,660 vnesite ali celo kot niz štirih znakov. 55 00:02:34,660 --> 00:02:37,820 Ko se ukvarjajo s številkami v vlivanje, morate razmisliti, kako 56 00:02:37,820 --> 00:02:40,470 natančnost svojo vrednost bo vplivalo. 57 00:02:40,470 --> 00:02:43,240 Imejte v mislih, da lahko natančnost ostala enaka, 58 00:02:43,240 --> 00:02:47,150 ali lahko izgubijo natančnost, vendar nikoli ne more pridobiti natančnost. 59 00:02:47,150 --> 00:02:49,060 Gremo skozi za tri najbolj pogoste načine, ki jih lahko 60 00:02:49,060 --> 00:02:50,400 izgubijo natančnost. 61 00:02:50,400 --> 00:02:53,060 Casting plovec za notr povzroči krajšanje vsega 62 00:02:53,060 --> 00:02:54,900 decimalno vejico, tako da si levo 63 00:02:54,900 --> 00:02:55,950 s celega števila. 64 00:02:55,950 --> 00:03:02,000 Če vzamemo float x, ki bo enak 3,7, lahko odda 65 00:03:02,000 --> 00:03:05,580 ta spremenljivka x notr preprosto pisanje v int 66 00:03:05,580 --> 00:03:07,050 oklepaje. 67 00:03:07,050 --> 00:03:10,010 Kadarkoli uporabljamo ta izraz tukaj, bomo dejansko 68 00:03:10,010 --> 00:03:12,810 se uporabi vrednost 3, ker smo okrnjena 69 00:03:12,810 --> 00:03:14,880 vse za decimalno vejico. 70 00:03:14,880 --> 00:03:17,210 Prav tako lahko pretvorite dolgo časa, da notr, ki bo 71 00:03:17,210 --> 00:03:20,760 Podobno vodilo v izgubo zelo naročilu bitov. 72 00:03:20,760 --> 00:03:23,910 Dolgo dolgo traja največ 8 bajtov ali 64 bitov pomnilnika. 73 00:03:23,910 --> 00:03:27,050 Torej, ko smo ga meče na notr, ki ima samo 4 bajte ali 32 74 00:03:27,050 --> 00:03:29,820 bitov, smo v bistvu sekanje off vse nastavke, da 75 00:03:29,820 --> 00:03:32,420 predstavljajo večje vrednosti binarne. 76 00:03:32,420 --> 00:03:34,690 Lahko bi tudi glasuje dvakrat na likvidna sredstva, ki bo zagotovil 77 00:03:34,690 --> 00:03:37,340 si čim tesnejše plovec z dvojno brez 78 00:03:37,340 --> 00:03:39,100 nujno, da zaokroževanje. 79 00:03:39,100 --> 00:03:41,840 Podobno smo dolgo dolgo int konverzijo, izguba 80 00:03:41,840 --> 00:03:44,890 natančnost je zaradi dvojnega vsebuje več podatkov. 81 00:03:44,890 --> 00:03:47,910 Dvoposteljna vam bo omogočilo, da shranite 53 pomembnih bitov, 82 00:03:47,910 --> 00:03:50,650 približno 16 večjih mest. 83 00:03:50,650 --> 00:03:53,050 Ker bo plovec samo vam omogoča shranjevanje 24 84 00:03:53,050 --> 00:03:56,235 pomembnih bitov, približno 7 pomembnih številk. 85 00:03:56,235 --> 00:03:58,700 V zadnjih dveh primerih je lahko v pomoč, da razmišljajo o 86 00:03:58,700 --> 00:04:01,200 vnesite litje kot spreminjanje velikosti fotografij. 87 00:04:01,200 --> 00:04:03,860 Ko greste od velikosti do majhne velikosti, ne moreš videti 88 00:04:03,860 --> 00:04:05,600 stvari, kot je jasno, ker ste izgubili podatke 89 00:04:05,600 --> 00:04:07,530 v obliki slikovnih pik. 90 00:04:07,530 --> 00:04:09,270 Tip litje lahko povzroči tudi težave, ko smo 91 00:04:09,270 --> 00:04:11,050 oddanih ints v likvidna sredstva. 92 00:04:11,050 --> 00:04:13,920 Ker plava na 32-bitno strojno le 24 93 00:04:13,920 --> 00:04:16,959 pomembnih bitov, ki jih ni mogoče natančno predstavljajo vrednote 94 00:04:16,959 --> 00:04:22,750 več kot 2 do moči 24 ali 16777217. 95 00:04:22,750 --> 00:04:25,540 Zdaj pa govoriti o eksplicitno in implicitno litje. 96 00:04:25,540 --> 00:04:28,000 Izrecno litje je, ko smo napisali vrsto v oklepaju 97 00:04:28,000 --> 00:04:29,430 pred imenom spremenljivke. 98 00:04:29,430 --> 00:04:33,100 Kot primer, preden smo pisali int v oklepaju pred našo 99 00:04:33,100 --> 00:04:35,640 float spremenljivko x. 100 00:04:35,640 --> 00:04:37,200 Na ta način smo dobili int vrednost, 101 00:04:37,200 --> 00:04:38,593 okrnjene vrednost 3,7 - 102 00:04:38,593 --> 00:04:40,370 3. 103 00:04:40,370 --> 00:04:42,970 Implicitno litje, ko prevajalnik samodejno preklopi 104 00:04:42,970 --> 00:04:46,340 podobne vrste za super tip, ali opravlja kakšno drugo vrsto 105 00:04:46,340 --> 00:04:48,310 vlivanje ne zahteva uporabnik za pisanje 106 00:04:48,310 --> 00:04:49,720 vsaka dodatna oznaka. 107 00:04:49,720 --> 00:04:53,550 Na primer, ko smo dodali 5 in 1,1, naše vrednote že 108 00:04:53,550 --> 00:04:55,680 Vrste so povezana z njimi. 109 00:04:55,680 --> 00:04:59,480 The 5 je int, medtem ko je 1,1 drsenje. 110 00:04:59,480 --> 00:05:02,390 Da bi jih dodali, računalnik meče 5 v obtoku, 111 00:05:02,390 --> 00:05:04,530 kar bi bilo isto, kot pisanje 5,0 v 112 00:05:04,530 --> 00:05:06,476 prvo mesto. 113 00:05:06,476 --> 00:05:13,210 Ampak ta način povemo plovec 5 ali 5,0, plus kar je bilo že 114 00:05:13,210 --> 00:05:16,960 float, 1,1, in od tam lahko dejansko dodajte 115 00:05:16,960 --> 00:05:18,640 vrednote in dobili vrednost 6,1. 116 00:05:21,170 --> 00:05:23,500 Implicitno litje tudi nam omogoča, da določite spremenljivke 117 00:05:23,500 --> 00:05:25,590 Različne vrste drug na drugega. 118 00:05:25,590 --> 00:05:28,110 Mi lahko vedno dodeli manj natančno vrsto v več 119 00:05:28,110 --> 00:05:29,250 Natančna 1. 120 00:05:29,250 --> 00:05:37,060 Na primer, če imamo dvojno x, y in z int - 121 00:05:37,060 --> 00:05:40,120 in bi ti imeli vrednote, ki smo jih iz da - 122 00:05:40,120 --> 00:05:43,560 lahko rečemo x enak y. 123 00:05:43,560 --> 00:05:46,340 Ker ima dvojno večjo natančnost kot notr, zato smo 124 00:05:46,340 --> 00:05:48,380 ne boste izgubili nobenih podatkov. 125 00:05:48,380 --> 00:05:50,420 Po drugi strani pa ne bi nujno bilo pravilno reči, 126 00:05:50,420 --> 00:05:54,060 y je enaka x, saj bi lahko z dvojnim imajo večjo vrednost kot 127 00:05:54,060 --> 00:05:55,220 število. 128 00:05:55,220 --> 00:05:57,420 In tako se je celo ne bi mogli imeti vse 129 00:05:57,420 --> 00:05:59,560 Podatki, shranjeni v dvojico. 130 00:05:59,560 --> 00:06:02,610 Implicitno litje se uporablja tudi v primerjalnih izvajalcev, kot so 131 00:06:02,610 --> 00:06:06,410 več, manjša ali enakost operaterja. 132 00:06:06,410 --> 00:06:13,050 Tako lahko rečemo, če je večja od 5,1 5 in dobimo 133 00:06:13,050 --> 00:06:14,750 pride resnica. 134 00:06:14,750 --> 00:06:18,470 Ker je 5 int, vendar pa se bo oddal v likvidna sredstva, da bi 135 00:06:18,470 --> 00:06:22,090 se v primerjavi s plovcem 5,1, bi lahko rekli 5.1 136 00:06:22,090 --> 00:06:24,550 večja od 5,0. 137 00:06:24,550 --> 00:06:31,320 Enako velja, če s pravim 2,0 enaka enaka 2. 138 00:06:31,320 --> 00:06:34,190 Radi bi dobili tudi res, ker bo računalnik odda 139 00:06:34,190 --> 00:06:39,750 celo 2 do lebdi v zraku in potem pravijo, 2,0 enak enak 2,0, 140 00:06:39,750 --> 00:06:41,660 to je res. 141 00:06:41,660 --> 00:06:44,180 Ne pozabite, da lahko tudi odda med ints in chars, 142 00:06:44,180 --> 00:06:46,350 ali ASCII vrednosti. 143 00:06:46,350 --> 00:06:49,690 Znakov je treba tudi zmanjšati binary, kar je razlog, zakaj 144 00:06:49,690 --> 00:06:51,920 Lahko preprosto pretvorite med znakov in njihovih 145 00:06:51,920 --> 00:06:53,260 ASCII vrednosti. 146 00:06:53,260 --> 00:06:56,180 Če želite izvedeti več o tem, si oglejte video na ASCII. 147 00:06:56,180 --> 00:06:58,080 Ko boste vzeli trenutek za razmislek o tem, kako je shranjenih podatkov, 148 00:06:58,080 --> 00:06:59,990 se začne, da bi veliko smisla. 149 00:06:59,990 --> 00:07:02,790 To je tako kot razlika med vetrom in veter. 150 00:07:02,790 --> 00:07:05,490 Podatki so enaki, vendar pa je vrsta lahko spremenite kako 151 00:07:05,490 --> 00:07:06,720 razlaga. 152 00:07:06,720 --> 00:07:10,430 Moje ime je Jordan Jozwiak to cs50.