[Powered by Google Translate] Jordan JOZWIAK: Tipo malplenigita, en la plej simpla senco, estas maniero por ŝanĝi al komputilo lego de iuj datumoj de implice aŭ eksplicite ŝanĝanta ĝia datumtipo. Kiel ŝanĝi la int por kaleŝego, aŭ inverse. Por kompreni tipo malplenigita, ni bezonas starti kun la fundamentoj - datumtipoj sin. En komputilo lingvoj kiel C, ĉiuj variabloj havas ian de datumtipo kiu determinas kiom la komputilo, kaj same la uzanto, interpretas ke variablo. Nombraj datumtipoj tiaj kiel int, longa tempo, kaleŝego kaj duobla, ĉiuj havas siajn proprajn trajtojn unika kaj estas uzita al precizigi valoroj de varianta gamoj kaj precizeco. Tipo casting nin permesas preni glitpunkta nombro kiel 3.14 kaj akiri la parto antaŭ la dekuma, 3 en ĉi tiu kazo, per jxetantajn ŝin al int. Ni prenu ekzemplon de la angla lingvo por mallonga revizii de tipoj, kaj vidi kiel tipo casting povas ŝanĝi la vojo ni interpreti peco de datumoj. Por datumoj, ni prenu la simboloj tie. Mi nur raporti al tiuj zorgeme agordis linioj kiel simboloj, sed kiel iu kiu konas la anglan lingvon, vi tuj agnoski ke ili estas, fakte, leteroj. Vi implice komprenita la datumtipo. Rigardante tiun ĉenon de literoj oni povas vidi du malsamaj vortoj, ĉiu kun sia signifo. Jen la substantivo, vento, kiel en la vento blovas ekstere. Kaj tie estas la verbo, vento, kiel en mi bezonas vento mia analoga horloĝo. Tiu estas interesa ekzemplo, ĉar ni povas vidi kiom la tipo kiu ni atribuas al niaj datumoj, ĉu substantivo aŭ verbo, ŝanĝoj kiel ni uzas tiun datumoj - kiel la vorto vento aŭ vento. Kvankam komputilo ne zorgas pri gramatiko kaj partoj de angla lingvo, la sama baza principo validas. Tio estas, ni povas ŝanĝi la lego de la ĝusta samaj datumoj stokitaj en memoro per simple jxetantajn ĝin al malsama tipo. Jen la grandecoj de la plej komunaj tipoj sur 32-bita mastruma sistemo. Ni havas char je 1 bajto, int kaj flosas en 4 bajtoj, longa longa kaj duobla al la 8 bajtoj. Ĉar int okupas 4 bajtoj, estos preni 32 bitoj kiam estas stokita en memoro kiel duuma serio de nuloj kaj aĵoj. Tiel longe kiel nia variablo restas kiel tipo int, la komputilo ĉiam konverti tiujn kaj nuloj de duuma en la originala nombro. Tamen, ni povus teorie jxetu tiuj 32 bitoj en serio de Bulea tipoj. Kaj tiam la komputilo ne plu vidas numeron, sed anstataŭ kolekto de nuloj kaj aĵoj. Ni povus ankaŭ provi legi tiun datumon malsamaj nombraj tajpi, aŭ eĉ kiel linio de kvar signojn. Kiam kontraktanta kun nombroj en malplenigita, vi devas konsideri kiel la precizeco de via valoro estos trafitaj. Konsideru ke la precizeco povas resti la sama, aŭ vi povas perdi precizecon, sed vi neniam povas gajni precizeco. Ni iru tra la tri plej komunaj formoj kiuj vi povas perdi precizecon. Jxetantajn kaleŝego al int kaŭzos tranĉon de ĉio post la dekuma punkto, do vi forlasis kun la tuta nombro. Se vi prenos la kaleŝego x kiu egalos 3.7, ni povas jxetu ĉi variablo x al int per simple skribi int en krampoj. Kiam ajn ni uzas ĉi tiun terminon ĉi tie, ni efektive esti uzanta la valoro tri ĉar ni senpintigita ĉio post la dekuma punkto. Ni povas ankaŭ konverti longaj al int, kiu volas simile konduki al perdo de alta ordo bitoj. Longa tempo okupas 8 bajtoj, aŭ 64 bitoj en memoro. Do kiam ni ĵetis ĝin al int kiu nur havas 4 bajtoj, aŭ 32 bitoj, ni esence batante sur ĉiuj bitoj kiujn reprezentas la plej duuma valoroj. Vi povus ankaŭ jxetu duobla al kaleŝego, kiu donos vi la plej proksima ebla kaleŝego al la duobla sen nepre rondigas ĝin. Simila al nia longa tempo por int konvertiĝo, la perdo en precizeco estas ĉar duoblan enhavas pli datumojn. Duobla permesos stoki 53 signifa bitoj, proksimume 16 signifaj ciferoj. Dum kaleŝego nur permesas stoki 24 signifa bitoj, proksimume sep signifaj ciferoj. En ĉi tiuj du lastaj kazoj, ĝi povas esti utila pensi pri tajpi casting kiel regrandigi foton. Kiam vi iros de granda amplekso al malgranda grandeco, vi ne povas vidi aĵoj kiel klare ĉar vi perdis datumoj en formo de rastrumeroj. Tipo casting povas ankaŭ kaŭzi problemojn kiam ni jxetu ints al flosas. Ekde flosas sur 32-bita maŝino nur havas 24 signifa bitoj, ili ne povas precize prezenti valorojn super 2 al la potenco de 24, aŭ 16777217. Nun ni parolu pri eksplicita kaj implica casting. Eksplicita casting estas kiam ni skribas la tipo en krampoj antaux variablo nomo. Kiel ekzemplo, antaŭ ol ni skribis int en krampoj antaŭ niaj flosi variablo x. Tiamaniere, ni preni la int valoro, la senpintigita valoro de 3,7 - 3. Implicita casting estas kiam la tradukilo aŭtomate ŝanĝas simila tipoj super tipo, aŭ plenumas iu alia speco de jxetantajn sen postuli la uzanto por skribi neniu plia kodo. Ekzemple, kiam ni aldonas 5 kaj 1,1, niaj valoroj jam havas tipoj asociita kun ili. La 5 estas int, dum 1,1 estas kaleŝego. Por aldoni ilin, la komputilo ĵetas 5 en kaleŝego, kiu estus estinta la sama afero kiel skribi 5.0 en la unuan lokon. Sed tiamaniere ni diras kaleŝego 5, aŭ 5.0, alpago, kio jam kaleŝego, 1.1, kaj de tie ni povas vere aldoni tiujn valorojn kaj atingi la valoron 6.1. Implicita casting ankaŭ permesas al ni atribui variablojn de malsamaj tipoj al ĉiu alia. Ni povas ĉiam asigni malpli preciza tipo en pli preciza unu. Ekzemple, se ni havas duoblan x, kaj int y - kaj ĉi tiuj povus havi ajnan valoroj kiujn ni starigis ilin al - ni povas diri x egalas y. Ĉar la duoblaj havas pli precizeco ol int, do ni ne perdos neniun informon. Aliflanke, ĝi ne nepre estu ĝentila diri y egalas x, ĉar la duoblaj havu pli grandan valoron ol la entjero. Kaj tial la entjero eble ne povos teni la tuta informo stokita en la duobla. Implicita casting estas uzata ankaŭ en komparo operatoroj kiel pli granda ol, malpli ol, aŭ la egalecon operatoro. Tiel ni povas diri se 5.1 estas pli granda ol 5, kaj ni preni la rezulti vera. Ĉar 5 estas int, sed estos jxetita al kaleŝego por estas egala al la kaleŝego 5.1, ni dirus 5.1 estas pli granda ol 5.0. La sama estas vera kun diri se 2.0 egalas egalas 2. Ni ŝatus ankaŭ akiri vera, ĉar la komputilo forpusxos la entjero 2 flosi kaj poste diri 2.0 egalas egalas 2.0, ĉi tio estas vera. Ne forgesu, ke ni povas ankaŭ ĵetis inter ints kaj signoj, aŭ ASCII valoroj. Signaĵoj ankaŭ bezonas esti reduktita al binaraj, tial vi povas facile konverti inter signoj kaj iliaj respektivaj ASCII valoroj. Por lerni pli pri ĉi tio, kontrolu nian video sur ASCII. Kiam vi preni momenton por pensi pri kiel datumoj estas stokita, komencas fari multajn senco. Estas nur kiel la diferenco inter vento kaj vento. La datumoj estas la sama, sed la tipo povas ŝanĝi nian manieron interpreti ĝin. Mia nomo estas Jordanon Jozwiak, ĉi cs50.