[Powered by Google Translate] ЈОРДАН Јозвиак: Тип ливење, у најједноставнијем смислу,
начин да се промени тумачење једног рачунара неких података по
имплицитно или експлицитно мења свој тип података.
Таква промена, као инт у флоат, или обрнуто.
Да бисте разумели ливење типа, морамо да
почети са основама -
типови података самих.
У компјутерским језицима као што су Ц, све променљиве имају неку врсту
података типа који одређује како рачунар, а исто тако
корисник, тумачи ту променљиву.
Нумерички типови података, као што су инт, дуго дуго, флоат и
двапут, сви имају своје јединствене карактеристике и да су
користи за спецификацију вредности различитог опсега и прецизности.
Тип ливење нам омогућава да се плутајући низ тачака као
3.14 и добити део пре децималног зареза, 3 у овом случају,
ливењем га на инт.
Узмимо пример из енглеског језика за кратко
преглед типова, и да се види како се тип ливење можете променити
начин тумаче податак.
За податке, узмимо овде симболе.
Само погледајте ове пажљиво подешених линија као
симболи, али као неко ко зна енглески језик,
одмах признају да су они, у ствари, писма.
Ти имплицитно разумели тип података.
Гледајући овај низ слова можемо видети два
различите речи, свака са сопственим смислом.
Ту је именица, ветар, као у ветар дува напољу.
А ту је и глагол, ветар, као иу морам да
ветар ми аналогни сат.
Ово је занимљив пример, јер можемо видети
како тип који смо доделили нашим подацима, без обзира да ли именица или
глаголске, промене како користимо те податке -
као речи ветру или ветру.
Иако рачунар не брине о граматици и делова
енглеског говора, исти основни принцип.
То је, можемо променити тумачење тачно
Исти подаци се налазе у меморији једноставно га баца на
другачији тип.
Овде су величине најчешћих типова на 32-битни
оперативни систем.
Имамо карактер на 1 бите, инт и лебде у 4 бајта, дуго
дуго и двоструки на 8 бајтова.
Зато инт заузима 4 бајта, то ће потрајати 32 бита
када се чува у меморији као бинарни низ
нула и јединица.
Докле год наше варијабле остаје као типа инт, општина
Рачунар ће увек претворити те јединице и нуле од
Бинарни у оригиналном броју.
Међутим, теоретски могли бацити тих 32
бита у низу Булових типова.
А онда рачунар више не би видели број, али
уместо колекција нула и јединица.
Такође би могла да покуша да прочитате те податке, као другачији нумеричка
упишите, или чак и као низ од четири карактера.
Када се ради са бројевима у ливење, морате размотрити колико
прецизност вашег вредности ће бити погођена.
Имајте на уму да је прецизност остане исти,
или можете изгубити прецизност, али никада не можете добити прецизност.
Идемо кроз за три најчешћих начина на које можете
губе прецизност.
Кастинг за сплав на инт ће изазвати скраћења свега
после децималног зареза, тако да сте отишли
са целим бројем.
Ако узмемо к плутају која ће бити једнака 3,7, можемо да баци
ове променљиве к на инт једноставно писање инт у
заграде.
Кад год ми користимо овај израз овде, ми ћемо ефикасно
се користи вредност три, јер смо одсецају
све након децималног зареза.
Такође могу да конвертују дуго дуго на инт, који ће
Слично довести до губитка високе реда бита.
Дуго дуго траје до 8 бајтова или 64 бита у меморији.
Дакле, када смо га баци на инт који има само 4 бајта или 32
бита, онда смо одсецање свих битова који
представљају веће вредности бинарне.
Такође можете да бацају дупло на пловак, који ће дати
ти најближи могући пловак за двоструко без
нужно је заокруживање.
Слично нам дуго дуго инт конверзије, губитак у
прецизност је зато двоструко садржи више података.
Двапут ће вам омогућити да сачувате 53 значајне битове,
око 16 значајних цифара.
Док пловак ће вам омогућити да сачувате 24
значајна бита, отприлике седам значајних цифара.
У последње две случајевима, може бити од помоћи да смислим
упишите кастинг као промену величине фотографија.
Када идете из великих димензија на мале величине, ви не можете да видите
ствари као што је јасно, јер сте изгубили податке
у облику пиксела.
Тип ливење такође може да изазове проблеме када смо
баци Интс да плута.
Пошто плута на 32-битну машину имају само 24
значајни бита, они не могу прецизно представљају вредности
преко 2 снази 24, односно 16777217.
Сада ћемо да причамо о експлицитног и имплицитног ливења.
Експлицитно ливење када пишемо тип у загради
пре име променљиве.
Као пример, пре него што смо написали инт у заградама пре нашег
флоат променљиве к.
На овај начин смо добили инт вредност,
скраћена вредност 3,7 -
3.
Имплицитно ливење је када компајлер аутоматски мења
сличне врсте у супер тип, или обавља неку другу врсту
ливење без потребе корисника да напише
све додатне код.
На пример, када додамо 5 и 1,1, наше вредности већ имају
Типови повезане са њима.
5 је инт, док је 1,1 пловак.
Да би их додали, рачунар баца 5 у пловак,
која би била иста ствар као писање 5.0 у
прво место.
Али на овај начин кажемо пловак 5, или 5,0, плус оно што је већ
плутају, 1,1, и одатле смо заправо може додати ово
вредности и добила вредност 6.1.
Имплицитно ливење такође омогућава нам да доделите променљиве
Различите врсте једни другима.
Ми увек можемо доделити мање прецизан тип у више
прецизан један.
На пример, ако имамо двоструки Кс и један И инт -
и то може да има неке вредности које смо их поставили на -
можемо рећи к једнако и.
Зато двоструки има више прецизности него као инт, тако да смо
неће изгубити било какву информацију.
С друге стране, то не би нужно било исправно да се каже
и једнако к, јер можда има двоструко већу вредност од
природан број.
И тако цео можда неће моћи да држи све
информације ускладиштене у двојника.
Имплицитно ливење се такође користи у другим операторима као
већи од, мање од, или једнакост оператер.
На овај начин можемо да кажемо да ли је 5,1 већа од 5, а ми смо добили
резултат истина.
Јер 5 је инт, али то ће бити избачен на пловак у циљу
да се упореди са пловка 5,1, ми кажемо 5.1 је
већи од 5,0.
Исто важи и ако се говори 2,0 једнак једнак 2.
Такође би се тачно, јер рачунар ће баци
цео 2 да плутају, а онда кажу 2,0 једнако износи 2.0,
ово је истина.
Не заборавите да можемо бацити између Интс и карактера,
или АСЦИИ вредности.
Цхарс такође треба да се сведе на бинарни, што је разлог зашто
може лако претворити између карактера и њихових
АСЦИИ вредности.
Да бисте сазнали више о томе, погледајте нашу видео на АСЦИИ.
Када одвојите тренутак да размислите о томе како се подаци чувају се,
почиње да се много смисла.
То је исто као разлика између ветра и ветру.
Података је исти, али можете променити тип ми како
интерпретирати.
Моје име је Џордан Јозвиак, ово цс50.