1 00:00:07,632 --> 00:00:10,270 [Powered by Google Translate] ĠORDAN JOZWIAK: ikkastjar Tip, fis-sens sempliċi, huwa 2 00:00:10,270 --> 00:00:13,300 mod biex tbiddel l-interpretazzjoni tal-kompjuter ta 'xi data minn 3 00:00:13,300 --> 00:00:16,560 impliċitament jew espliċitament bdil tad-data tip tiegħu. 4 00:00:16,560 --> 00:00:19,940 Bħal jinbidlu l int għal float, jew viċi versa. 5 00:00:19,940 --> 00:00:21,550 Biex tifhem ikkastjar tat-tip, għandna bżonn li 6 00:00:21,550 --> 00:00:22,680 tibda bil-punti bażiċi - 7 00:00:22,680 --> 00:00:24,140 tipi ta 'data nfushom. 8 00:00:24,140 --> 00:00:26,960 Fl-lingwi tal-kompjuter bħal C, il-varjabbli kollha għandhom xi tip 9 00:00:26,960 --> 00:00:29,690 ta 'data tat-tip li jiddetermina kif il-kompjuter, u l-istess 10 00:00:29,690 --> 00:00:32,140 l-utent, tinterpreta dak il-varjabbli. 11 00:00:32,140 --> 00:00:35,160 Tipi numeriku tad-data bħal int, twil twil, float u 12 00:00:35,160 --> 00:00:38,110 doppja, kollha għandhom karatteristiċi uniċi tagħhom stess u huma 13 00:00:38,110 --> 00:00:41,370 użat biex jispeċifika valuri ta 'diversi firxiet u preċiżjoni. 14 00:00:41,370 --> 00:00:44,800 Ikkastjar tat-tip jippermetti li jittieħdu numru b'punt li jvarja bħal 15 00:00:44,800 --> 00:00:49,170 3.14 u jiksbu l-parti qabel l-deċimali, 3 f'dan il-każ, 16 00:00:49,170 --> 00:00:51,590 billi ikkastjar li int. 17 00:00:51,590 --> 00:00:53,900 Ejja jieħdu eżempju mill-lingwa Ingliża għal-qosor 18 00:00:53,900 --> 00:00:56,910 reviżjoni ta 'tipi, u biex tara kif ikkastjar tat-tip tista' tibdel 19 00:00:56,910 --> 00:00:59,380 il-mod aħna tinterpreta biċċa ta 'data. 20 00:00:59,380 --> 00:01:05,269 Għal data, ejja jieħdu l-simboli hawn. 21 00:01:05,269 --> 00:01:07,570 I biss jirreferu għal dawn il-linji b'attenzjoni konfigurati kif 22 00:01:07,570 --> 00:01:10,100 simboli, iżda bħala xi ħadd li jaf il-lingwa Ingliża, 23 00:01:10,100 --> 00:01:12,750 inti immedjatament jirrikonoxxu li huma, fil-fatt, l-ittri. 24 00:01:12,750 --> 00:01:15,580 Inti impliċitament mifhum it-tip tad-data. 25 00:01:15,580 --> 00:01:17,620 Ħarsa lejn din is-sekwenza ta 'ittri nistgħu naraw 2 26 00:01:17,620 --> 00:01:20,140 kliem differenti, kull wieħed bil tifsira tagħha stess. 27 00:01:20,140 --> 00:01:25,530 Hemm il-nom, riħ, bħal fil-daqqa riħ barra. 28 00:01:25,530 --> 00:01:28,280 U hemm l-verb, riħ, bħal fil għandi bżonn biex 29 00:01:28,280 --> 00:01:31,410 riħ għassa analogu tiegħi. 30 00:01:31,410 --> 00:01:33,420 Dan huwa eżempju interessanti, għaliex nistgħu naraw 31 00:01:33,420 --> 00:01:36,270 kif it-tip li aħna tassenja lill-dejta tagħna, kemm jekk nom jew 32 00:01:36,270 --> 00:01:39,080 , tibdil verb kif nużaw dik id-data - 33 00:01:39,080 --> 00:01:41,730 bħala l-riħ kelma jew mir-riħ. 34 00:01:41,730 --> 00:01:44,100 Għalkemm kompjuter ma jimpurtahom grammatika u partijiet 35 00:01:44,100 --> 00:01:47,750 tal-kelma Ingliża, il-prinċipju bażiku istess japplika. 36 00:01:47,750 --> 00:01:50,290 Dan huwa, nistgħu nbiddlu l-interpretazzjoni ta 'l-eżatta 37 00:01:50,290 --> 00:01:53,140 istess data maħżuna fil-memorja billi sempliċiment ikkastjar hija għal 38 00:01:53,140 --> 00:01:54,576 differenti tip. 39 00:01:54,576 --> 00:01:57,250 Hawn huma l-qisien tat-tipi l-aktar komuni fuq 32-bit 40 00:01:57,250 --> 00:01:58,340 sistema operattiva. 41 00:01:58,340 --> 00:02:02,070 Għandna char fl-1 byte, int u float fuq 4 bytes, fit 42 00:02:02,070 --> 00:02:04,390 twila u double fuq 8 bytes. 43 00:02:04,390 --> 00:02:07,670 Minħabba l int jieħu 4 bytes, se jieħdu 32 bits 44 00:02:07,670 --> 00:02:10,060 meta hija maħżuna fil-memorja bħala serje binarju 45 00:02:10,060 --> 00:02:11,500 ta 'żero u dawk. 46 00:02:11,500 --> 00:02:14,020 Sakemm varjabbli tagħna jibqa bħala int tip, il- 47 00:02:14,020 --> 00:02:16,740 kompjuter dejjem se jikkonvertu dawk dawk żerijiet minn 48 00:02:16,740 --> 00:02:19,120 binarja fil-numru oriġinali. 49 00:02:19,120 --> 00:02:21,270 Madankollu, nistgħu teoretikament mitfugħa dawk 32 50 00:02:21,270 --> 00:02:23,510 bits fis-serje ta 'tipi Boolean. 51 00:02:23,510 --> 00:02:26,090 U allura l-kompjuter ma tibqax tara numru, iżda 52 00:02:26,090 --> 00:02:28,810 minflok ġabra ta 'żero u dawk. 53 00:02:28,810 --> 00:02:31,570 Aħna tista 'wkoll tipprova biex jaqra dik id-data bħala numerika differenti 54 00:02:31,570 --> 00:02:34,660 tip, jew anki bħala sensiela ta 'erba' karattri. 55 00:02:34,660 --> 00:02:37,820 Meta jkun qed jittratta ma 'numri fil-ikkastjar, inti trid tikkunsidra kif 56 00:02:37,820 --> 00:02:40,470 il-preċiżjoni tal-valur tiegħek ser jiġu affettwati. 57 00:02:40,470 --> 00:02:43,240 Wieħed iżomm f'moħħu li l-preċiżjoni tista 'tissospendi l-istess, 58 00:02:43,240 --> 00:02:47,150 jew inti tista 'titlef preċiżjoni, imma int qatt ma tista' tikseb preċiżjoni. 59 00:02:47,150 --> 00:02:49,060 Ejja jgħaddu għall-modi 3 aktar komuni li inti tista ' 60 00:02:49,060 --> 00:02:50,400 jitilfu preċiżjoni. 61 00:02:50,400 --> 00:02:53,060 Tidwib ta 'float lil int se jikkawżaw truncation ta' kollox 62 00:02:53,060 --> 00:02:54,900 wara l-punt deċimali, hekk int xellug 63 00:02:54,900 --> 00:02:55,950 bin-numru sħiħ. 64 00:02:55,950 --> 00:03:02,000 Jekk nieħdu l-x float li se jkun daqs 3.7, nistgħu mitfugħa 65 00:03:02,000 --> 00:03:05,580 dan x-varjabbli għal int minn sempliċiment bil-miktub int fl- 66 00:03:05,580 --> 00:03:07,050 parentesi. 67 00:03:07,050 --> 00:03:10,010 Kull meta nużaw dan it-terminu dritt hawn, aħna ser effettiv 68 00:03:10,010 --> 00:03:12,810 tkun qed tuża l-valur 3 għaliex konna maqtugħ 69 00:03:12,810 --> 00:03:14,880 kollox wara l-punt deċimali. 70 00:03:14,880 --> 00:03:17,210 Nistgħu wkoll jikkonvertu twil twil għal int, li se 71 00:03:17,210 --> 00:03:20,760 bl-istess mod iwasslu għal telf ta 'għoli ordni bits. 72 00:03:20,760 --> 00:03:23,910 A twil twil jieħu 8 bytes, jew 64 bits fil-memorja. 73 00:03:23,910 --> 00:03:27,050 Allura meta aħna mitfugħa għal int li għandha biss 4 bytes, jew 32 74 00:03:27,050 --> 00:03:29,820 bits, aħna essenzjalment tqattiegħ off l-bits li 75 00:03:29,820 --> 00:03:32,420 jirrappreżentaw il-valuri binarji ogħla. 76 00:03:32,420 --> 00:03:34,690 Inti tista 'wkoll mitfugħa a doppja biex float, li se tagħti 77 00:03:34,690 --> 00:03:37,340 inti l-float eqreb possibbli għall-doppju mingħajr 78 00:03:37,340 --> 00:03:39,100 neċessarjament arrotondament dan. 79 00:03:39,100 --> 00:03:41,840 Simili għall twila twila tagħna għall-konverżjoni int, it-telf fil- 80 00:03:41,840 --> 00:03:44,890 preċiżjoni hija għaliex doppju fih aktar data. 81 00:03:44,890 --> 00:03:47,910 A double se jippermetti li inti biex jaħżnu 53 bits sinifikanti, 82 00:03:47,910 --> 00:03:50,650 madwar 16 numri sinifikanti. 83 00:03:50,650 --> 00:03:53,050 Billi float biss se jippermetti li inti biex jaħżnu 24 84 00:03:53,050 --> 00:03:56,235 bits sinifikanti, madwar 7 numri sinifikanti. 85 00:03:56,235 --> 00:03:58,700 F'dawn l-aħħar żewġ każijiet, jista 'jkun utli li wieħed jaħseb ta' 86 00:03:58,700 --> 00:04:01,200 tip ikkastjar bħala resizing ritratt. 87 00:04:01,200 --> 00:04:03,860 Meta tmur minn daqs kbir għal daqs żgħir, inti ma tistax tara 88 00:04:03,860 --> 00:04:05,600 affarijiet b'mod ċar għaliex inti mitlufa data 89 00:04:05,600 --> 00:04:07,530 fil-forma ta 'pixels. 90 00:04:07,530 --> 00:04:09,270 Ikkastjar tat-tip jista 'wkoll jikkawża problemi meta aħna 91 00:04:09,270 --> 00:04:11,050 mitfugħa ints li flowts. 92 00:04:11,050 --> 00:04:13,920 Peress sufruni fuq magna 32-bit biss 24 93 00:04:13,920 --> 00:04:16,959 bits sinifikanti, dawn ma jistgħux jirrappreżentaw eżattament valuri 94 00:04:16,959 --> 00:04:22,750 aktar minn 2 għall-qawwa ta '24, jew 16777217. 95 00:04:22,750 --> 00:04:25,540 Issa ejja nitkellmu dwar ikkastjar espliċitu u impliċitu. 96 00:04:25,540 --> 00:04:28,000 Ikkastjar espliċitu huwa meta aħna tikteb it-tip fil-parentesi 97 00:04:28,000 --> 00:04:29,430 qabel l-isem varjabbli. 98 00:04:29,430 --> 00:04:33,100 Bħala eżempju, qabel aħna kiteb int fil-parentesi qabel tagħna 99 00:04:33,100 --> 00:04:35,640 float x varjabbli. 100 00:04:35,640 --> 00:04:37,200 B'dan il-mod, irridu jiksbu l-valur int, il- 101 00:04:37,200 --> 00:04:38,593 valur maqtugħ ta '3,7 - 102 00:04:38,593 --> 00:04:40,370 3. 103 00:04:40,370 --> 00:04:42,970 Ikkastjar impliċiti huwa meta l-kumpilatur tinbidel awtomatikament 104 00:04:42,970 --> 00:04:46,340 tipi simili għal tip super, jew jagħmel xi tip ieħor ta ' 105 00:04:46,340 --> 00:04:48,310 ikkastjar mingħajr ma jeħtieġu l-utent biex jikteb 106 00:04:48,310 --> 00:04:49,720 kwalunkwe Kodiċi addizzjonali. 107 00:04:49,720 --> 00:04:53,550 Per eżempju, meta aħna żid 5 u 1.1, il-valuri tagħna diġà għandhom 108 00:04:53,550 --> 00:04:55,680 tipi assoċjati magħhom. 109 00:04:55,680 --> 00:04:59,480 Il-5 huwa int, filwaqt 1.1 huwa float. 110 00:04:59,480 --> 00:05:02,390 Sabiex jiżdiedu, il-kompjuter casts 5 ġo float, 111 00:05:02,390 --> 00:05:04,530 li kien ikun l-istess ħaġa bħat-kitba 5.0 fil- 112 00:05:04,530 --> 00:05:06,476 1 post. 113 00:05:06,476 --> 00:05:13,210 Iżda dan il-mod aħna ngħidu float 5, jew 5.0, flimkien ma 'dak li diġà kien 114 00:05:13,210 --> 00:05:16,960 float, 1.1, u minn hemm nistgħu ngħidu żid dawn 115 00:05:16,960 --> 00:05:18,640 valuri u jiksbu l-valur 6.1. 116 00:05:21,170 --> 00:05:23,500 Ikkastjar impliċiti wkoll jippermetti li tassenja varjabbli ta ' 117 00:05:23,500 --> 00:05:25,590 tipi differenti ma 'xulxin. 118 00:05:25,590 --> 00:05:28,110 Nistgħu dejjem tassenja tip inqas preċiż f'waħda iktar 119 00:05:28,110 --> 00:05:29,250 preċiżi 1. 120 00:05:29,250 --> 00:05:37,060 Per eżempju, jekk ikollna x doppja, u y int - 121 00:05:37,060 --> 00:05:40,120 u dawn jista 'jkollhom xi valuri li aħna stabbiliti biex - 122 00:05:40,120 --> 00:05:43,560 nistgħu ngħidu x ugwali y. 123 00:05:43,560 --> 00:05:46,340 Minħabba li l-doppju jkollu preċiżjoni aktar minn int, hekk aħna 124 00:05:46,340 --> 00:05:48,380 mhux se jitlef l-ebda informazzjoni. 125 00:05:48,380 --> 00:05:50,420 Min-naħa l-oħra, ma jkunx neċessarjament korrett li jingħad 126 00:05:50,420 --> 00:05:54,060 y ugwali x, minħabba li l-doppju jista 'jkollhom valur akbar minn 127 00:05:54,060 --> 00:05:55,220 l-eqreb numru sħiħ. 128 00:05:55,220 --> 00:05:57,420 U għalhekk l-eqreb numru sħiħ jista 'ma jkunx kapaċi li jżomm l- 129 00:05:57,420 --> 00:05:59,560 informazzjoni maħżuna fl-għadd doppju. 130 00:05:59,560 --> 00:06:02,610 Ikkastjar impliċiti hi wkoll użata fil operaturi paragun bħal 131 00:06:02,610 --> 00:06:06,410 akbar minn, inqas minn, jew l-operatur ugwaljanza. 132 00:06:06,410 --> 00:06:13,050 Dan il-mod nistgħu ngħidu jekk 5.1 huwa akbar minn 5, u irridu jiksbu l- 133 00:06:13,050 --> 00:06:14,750 jirriżultaw minnu. 134 00:06:14,750 --> 00:06:18,470 Minħabba 5 huwa int, iżda ser jiġu mitfugħa għal float sabiex 135 00:06:18,470 --> 00:06:22,090 jiġi mqabbel mal-float 5.1, aħna'd ngħidu 5.1 huwa 136 00:06:22,090 --> 00:06:24,550 akbar minn 5.0. 137 00:06:24,550 --> 00:06:31,320 L-istess huwa veru mal tgħid jekk 2.0 ugwali ugwali 2. 138 00:06:31,320 --> 00:06:34,190 Aħna tixtieq tirċievi wkoll veru, minħabba li l-kompjuter se jitfa 'l- 139 00:06:34,190 --> 00:06:39,750 integer 2 li float u mbagħad jgħidu 2.0 ugwali ugwali 2.0, 140 00:06:39,750 --> 00:06:41,660 dan huwa veru. 141 00:06:41,660 --> 00:06:44,180 Tinsiex li aħna jista 'wkoll jixħet bejn ints u Chars, 142 00:06:44,180 --> 00:06:46,350 jew il-valuri ASCII. 143 00:06:46,350 --> 00:06:49,690 Chars bżonn ukoll li jiġi mnaqqas għal binarju, li hija għaliex inti 144 00:06:49,690 --> 00:06:51,920 tista 'faċilment tikkonverti bejn Chars u rispettivi tagħhom 145 00:06:51,920 --> 00:06:53,260 Valuri ASCII. 146 00:06:53,260 --> 00:06:56,180 Biex jitgħallmu aktar dwar dan, check out video tagħna fuq ASCII. 147 00:06:56,180 --> 00:06:58,080 Meta inti tieħu mument biex jaħsbu dwar kif id-data s maħżuna, 148 00:06:58,080 --> 00:06:59,990 dan jibda jagħmel ħafna sens. 149 00:06:59,990 --> 00:07:02,790 Huwa biss bħall-differenza bejn riħ u r-riħ. 150 00:07:02,790 --> 00:07:05,490 Id-data hija l-istess, iżda t-tip jista 'jinbidel kif aħna 151 00:07:05,490 --> 00:07:06,720 interpretata. 152 00:07:06,720 --> 00:07:10,430 Jisimni Ġordan Jozwiak, dan cs50.