1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] JORDAN JOZWIAK: Típus öntés, a legegyszerűbb értelemben, a 2 00:00:10,270 --> 00:00:13,300 módon megváltoztatni a számítógép értelmezése bizonyos adatok 3 00:00:13,300 --> 00:00:16,560 implicit és explicit megváltoztatása adattípust. 4 00:00:16,560 --> 00:00:19,940 Mint például a változó int egy float, vagy fordítva. 5 00:00:19,940 --> 00:00:21,550 Ahhoz, hogy megértsük típusa casting, meg kell 6 00:00:21,550 --> 00:00:22,680 kezdje az alapokat - 7 00:00:22,680 --> 00:00:24,140 adattípusok magukat. 8 00:00:24,140 --> 00:00:26,960 A számítógépes nyelvek, mint a C, az összes változó van valamilyen 9 00:00:26,960 --> 00:00:29,690 Az adattípus, amely meghatározza, hogy a számítógép, és hasonlóképpen 10 00:00:29,690 --> 00:00:32,140 a felhasználó, értelmezi, hogy a változó. 11 00:00:32,140 --> 00:00:35,160 Numerikus adattípusok például int, hosszú, hosszú, úszó-és 12 00:00:35,160 --> 00:00:38,110 kettős, minden megvan a saját egyedi jellemzőkkel és 13 00:00:38,110 --> 00:00:41,370 leírására használt értékek különböző tartományok és a pontosság. 14 00:00:41,370 --> 00:00:44,800 Type öntés lehetővé teszi számunkra, hogy egy lebegőpontos szám, mint a 15 00:00:44,800 --> 00:00:49,170 3,14 és kap a rész előtt a decimális, 3 a jelen esetben, 16 00:00:49,170 --> 00:00:51,590 öntéssel, hogy egy int. 17 00:00:51,590 --> 00:00:53,900 Nézzünk egy példát az angol nyelvet egy rövid 18 00:00:53,900 --> 00:00:56,910 felülvizsgálata típusok, és hogy hogyan típusú casting lehet változtatni 19 00:00:56,910 --> 00:00:59,380 hogy hogyan értelmezzük a adat. 20 00:00:59,380 --> 00:01:05,269 Az adatok, vessünk a szimbólumok itt. 21 00:01:05,269 --> 00:01:07,570 Csak nézze meg ezeket a gondosan beállított vonalak 22 00:01:07,570 --> 00:01:10,100 szimbólumokat, hanem valaki, aki ismeri az angol nyelvet, 23 00:01:10,100 --> 00:01:12,750 azonnal felismerik, hogy ők valójában, leveleket. 24 00:01:12,750 --> 00:01:15,580 Ön hallgatólagosan megértette a adattípust. 25 00:01:15,580 --> 00:01:17,620 Nézi most ezt a húr a betűk akkor megjelenik két 26 00:01:17,620 --> 00:01:20,140 más szavakkal, mindegyiknek megvan a maga jelentése. 27 00:01:20,140 --> 00:01:25,530 Ott a főnév, a szél, mint a szél fúj odakint. 28 00:01:25,530 --> 00:01:28,280 És ott van az ige, a szél, mint szeretnék 29 00:01:28,280 --> 00:01:31,410 szél az analóg óra. 30 00:01:31,410 --> 00:01:33,420 Ez egy érdekes példa, mert látjuk 31 00:01:33,420 --> 00:01:36,270 miként az a típus, amit rendelni adatainkat, akár főnév vagy 32 00:01:36,270 --> 00:01:39,080 ige változások hogyan használjuk fel az adatokat - 33 00:01:39,080 --> 00:01:41,730 mint a szó szél vagy szél. 34 00:01:41,730 --> 00:01:44,100 Bár a számítógép nem törődik nyelvtani és alkatrészek 35 00:01:44,100 --> 00:01:47,750 az angol beszéd, ugyanazokkal az alapvető elv. 36 00:01:47,750 --> 00:01:50,290 Ez azt jelenti, meg tudjuk változtatni a értelmezését a pontos 37 00:01:50,290 --> 00:01:53,140 ugyanazok az adatok a memóriában tárolt egyszerűen öntés azt egy 38 00:01:53,140 --> 00:01:54,576 különböző típusú. 39 00:01:54,576 --> 00:01:57,250 Itt vannak a méret a leggyakoribb típus a 32-bites 40 00:01:57,250 --> 00:01:58,340 operációs rendszer. 41 00:01:58,340 --> 00:02:02,070 Van egy char az 1 byte, int és float, 4 bájt hosszú 42 00:02:02,070 --> 00:02:04,390 hosszú és egy kettős, 8 bájt. 43 00:02:04,390 --> 00:02:07,670 Mivel az int veszi fel 4 byte, akkor vegye fel 32 bit 44 00:02:07,670 --> 00:02:10,060 történő tároláskor a memóriában bináris sorozat 45 00:02:10,060 --> 00:02:11,500 nullákkal és egyesekkel. 46 00:02:11,500 --> 00:02:14,020 Mindaddig, amíg a változó marad a típus int, a 47 00:02:14,020 --> 00:02:16,740 számítógép mindig konvertálja azokat egyesek és nullák tól 48 00:02:16,740 --> 00:02:19,120 bináris az eredeti számot. 49 00:02:19,120 --> 00:02:21,270 Azonban elvileg leadott e 32 50 00:02:21,270 --> 00:02:23,510 bitek egy sorozat Boole típusok. 51 00:02:23,510 --> 00:02:26,090 És akkor a számítógép már nem látni egy szám, de 52 00:02:26,090 --> 00:02:28,810 helyett gyűjteménye nullákkal és egyesekkel. 53 00:02:28,810 --> 00:02:31,570 Mi is megpróbáljuk értelmezni az adatokat, mint egy másik numerikus 54 00:02:31,570 --> 00:02:34,660 írja, vagy akár egy sor négy karakter. 55 00:02:34,660 --> 00:02:37,820 Amikor foglalkozó számok öntés, meg kell vizsgálni, hogyan 56 00:02:37,820 --> 00:02:40,470 pontossága az érték fogja érinteni. 57 00:02:40,470 --> 00:02:43,240 Ne feledje, hogy a precíziós maradhat ugyanaz, 58 00:02:43,240 --> 00:02:47,150 vagy akkor elveszíti pontosságot, de soha nem lehet szerezni pontossággal. 59 00:02:47,150 --> 00:02:49,060 Menjünk át a három leggyakoribb módja, hogy akkor 60 00:02:49,060 --> 00:02:50,400 veszít pontossággal. 61 00:02:50,400 --> 00:02:53,060 Casting úszó egy int okoz csonkolása mindent 62 00:02:53,060 --> 00:02:54,900 a tizedespont után, szóval marad 63 00:02:54,900 --> 00:02:55,950 az egész szám. 64 00:02:55,950 --> 00:03:02,000 Ha vesszük a float x, ami egyenlő 3,7, akkor öntött 65 00:03:02,000 --> 00:03:05,580 ez a változó x egy int egyszerűen írásban int a 66 00:03:05,580 --> 00:03:07,050 zárójelben. 67 00:03:07,050 --> 00:03:10,010 Amikor használjuk ezt a kifejezést itt, akkor hatékonyan 68 00:03:10,010 --> 00:03:12,810 használja az érték 3 mert már csonka 69 00:03:12,810 --> 00:03:14,880 Mindent a tizedesvessző után. 70 00:03:14,880 --> 00:03:17,210 Azt is átalakítani egy hosszú, hosszú egy int, amely 71 00:03:17,210 --> 00:03:20,760 hasonlóan elvesztéséhez vezethet a magas rendű biteket. 72 00:03:20,760 --> 00:03:23,910 A hosszú, hosszú veszi fel 8 bájt, illetve 64 bit a memóriában. 73 00:03:23,910 --> 00:03:27,050 Így, amikor öntött, hogy egy int, melyek esetében csak a 4 byte, vagy 32 74 00:03:27,050 --> 00:03:29,820 bit, mi lényegében darabolás le a bitek 75 00:03:29,820 --> 00:03:32,420 képviseli a nagyobb bináris értékeket. 76 00:03:32,420 --> 00:03:34,690 Te is leadott egy dupla olyan úszó, amely megadja 77 00:03:34,690 --> 00:03:37,340 Önnek a lehető legszorosabb úszó a kettős nélkül 78 00:03:37,340 --> 00:03:39,100 szükségképpen kerekítés. 79 00:03:39,100 --> 00:03:41,840 Hasonló a hosszú hosszú int átalakítás, a veszteség 80 00:03:41,840 --> 00:03:44,890 pontosság azért van, mert a kettős több adatot tartalmaz. 81 00:03:44,890 --> 00:03:47,910 A kettős lehetővé teszi, hogy tárolja 53 jelentős bit, 82 00:03:47,910 --> 00:03:50,650 mintegy 16 értékes számjegy. 83 00:03:50,650 --> 00:03:53,050 Mivel a float csak lehetővé teszi, hogy tárolja 24 84 00:03:53,050 --> 00:03:56,235 jelentős bit, nagyjából 7 számjeggyel. 85 00:03:56,235 --> 00:03:58,700 Az utóbbi két esetben hasznos lehet gondolni 86 00:03:58,700 --> 00:04:01,200 írja öntésre átméretezés egy fényképet. 87 00:04:01,200 --> 00:04:03,860 Amikor elmész egy nagy méretű, hogy egy kis méretű, nem látsz 88 00:04:03,860 --> 00:04:05,600 dolgok, mint tisztán, mert elveszett adatokat 89 00:04:05,600 --> 00:04:07,530 formájában pixelek. 90 00:04:07,530 --> 00:04:09,270 Típus konverziókat is okozhat gondot, amikor 91 00:04:09,270 --> 00:04:11,050 leadott ints az úszók. 92 00:04:11,050 --> 00:04:13,920 Mivel az úszók, a 32-bites gépet csak 24 93 00:04:13,920 --> 00:04:16,959 jelentős bit, nem tudják pontosan értékeket képviselnek 94 00:04:16,959 --> 00:04:22,750 több mint 2, hogy a hatalom a 24, vagy a 16777217. 95 00:04:22,750 --> 00:04:25,540 Most beszéljünk explicit és implicit öntés. 96 00:04:25,540 --> 00:04:28,000 Explicit casting, amikor írunk a típus zárójelben 97 00:04:28,000 --> 00:04:29,430 előtt egy változó nevét. 98 00:04:29,430 --> 00:04:33,100 Példaként, mielőtt írtuk int zárójelben előttünk 99 00:04:33,100 --> 00:04:35,640 float változó x. 100 00:04:35,640 --> 00:04:37,200 Ily módon megkapjuk a int érték, 101 00:04:37,200 --> 00:04:38,593 csonkított érték 3,7 - 102 00:04:38,593 --> 00:04:40,370 3. 103 00:04:40,370 --> 00:04:42,970 Implicit casting, amikor a fordító automatikusan átvált 104 00:04:42,970 --> 00:04:46,340 hasonló típusú egy szuper típusú, vagy végez valamilyen más fajta 105 00:04:46,340 --> 00:04:48,310 casting anélkül, hogy a felhasználó számára, hogy írjon 106 00:04:48,310 --> 00:04:49,720 további kódot. 107 00:04:49,720 --> 00:04:53,550 Így például, amikor adjunk hozzá 5 és 1,1, értékeink már 108 00:04:53,550 --> 00:04:55,680 típusok velük kapcsolatban. 109 00:04:55,680 --> 00:04:59,480 Az 5 egy int, míg a 1.1 egy úszó. 110 00:04:59,480 --> 00:05:02,390 Annak érdekében, hogy vegye fel őket, a számítógép vet 5 egy float, 111 00:05:02,390 --> 00:05:04,530 ami lett volna ugyanaz, mint írásban 5,0 a 112 00:05:04,530 --> 00:05:06,476 első helyen. 113 00:05:06,476 --> 00:05:13,210 De ez így mondjuk float 5, vagy 5,0, plusz mi már 114 00:05:13,210 --> 00:05:16,960 Egy úszó, 1,1, és onnan tudjuk ténylegesen hozzá e 115 00:05:16,960 --> 00:05:18,640 értékek és kap az érték 6,1. 116 00:05:21,170 --> 00:05:23,500 Implicit casting is lehetővé teszi számunkra, hogy rendelni változókkal 117 00:05:23,500 --> 00:05:25,590 különböző típusok egymással. 118 00:05:25,590 --> 00:05:28,110 Mi mindig rendelni egy kevésbé pontos típusát figyelembe egy 119 00:05:28,110 --> 00:05:29,250 1 pontos. 120 00:05:29,250 --> 00:05:37,060 Például, ha van egy dupla x, és egy int y - 121 00:05:37,060 --> 00:05:40,120 és ezek lehetnek olyan értékek, mi meg őket - 122 00:05:40,120 --> 00:05:43,560 azt mondhatjuk, x egyenlő y. 123 00:05:43,560 --> 00:05:46,340 Mivel a kettős több pontosságot, mint egy int, így 124 00:05:46,340 --> 00:05:48,380 nem veszíti el semmilyen információt. 125 00:05:48,380 --> 00:05:50,420 Másrészt, akkor nem feltétlenül helyes azt mondani, 126 00:05:50,420 --> 00:05:54,060 y értéke x, mert a kettős lehet, hogy egy nagyobb érték, mint a 127 00:05:54,060 --> 00:05:55,220 az egész. 128 00:05:55,220 --> 00:05:57,420 És így az egész nem lesz képes tartani az összes 129 00:05:57,420 --> 00:05:59,560 tárolt információk a kettős. 130 00:05:59,560 --> 00:06:02,610 Implicit öntés is használják összehasonlító operátorok, mint a 131 00:06:02,610 --> 00:06:06,410 nagyobb, kisebb, illetve az egyenlőség operátort. 132 00:06:06,410 --> 00:06:13,050 Így azt mondhatjuk, hogy 5,1 nagyobb, mint 5, és megkapjuk a 133 00:06:13,050 --> 00:06:14,750 eredménylistához igaz. 134 00:06:14,750 --> 00:06:18,470 Mivel 5 egy int, de ez lesz a leadott úszó annak érdekében, hogy 135 00:06:18,470 --> 00:06:22,090 össze kell hasonlítani a float 5,1, azt mondanám, hogy 5.1- 136 00:06:22,090 --> 00:06:24,550 nagyobb, mint 5,0. 137 00:06:24,550 --> 00:06:31,320 Ugyanez igaz a mondás, ha 2,0 egyenlő értéke 2. 138 00:06:31,320 --> 00:06:34,190 Mi lenne is kap igaz, mert a számítógép leadott 139 00:06:34,190 --> 00:06:39,750 értéke 2 és lebegni, majd mondja 2,0 egyenlő értéke 2,0, 140 00:06:39,750 --> 00:06:41,660 ez igaz. 141 00:06:41,660 --> 00:06:44,180 Ne felejtsük el, hogy mi is öntött között ints és a karakter, 142 00:06:44,180 --> 00:06:46,350 vagy ASCII értékeket. 143 00:06:46,350 --> 00:06:49,690 Karakterek is csökkenteni kell a bináris, ezért van 144 00:06:49,690 --> 00:06:51,920 könnyen konvertálni között karakterek és a megfelelő 145 00:06:51,920 --> 00:06:53,260 ASCII értékeket. 146 00:06:53,260 --> 00:06:56,180 Ha többet szeretne megtudni erről, nézd meg a videót az ASCII. 147 00:06:56,180 --> 00:06:58,080 Ha egy pillanatra gondolkodni, hogyan tárolja az adatokat, 148 00:06:58,080 --> 00:06:59,990 kezdődik, hogy sok értelme. 149 00:06:59,990 --> 00:07:02,790 Ez olyan, mint a különbség a szél és a szél. 150 00:07:02,790 --> 00:07:05,490 Az adat ugyanaz, de a típus lehet változtatni, hogy hogyan 151 00:07:05,490 --> 00:07:06,720 értelmezni. 152 00:07:06,720 --> 00:07:10,430 A nevem Jordan Jozwiak, ez CS50.