[Powered by Google Translate] Јордан JOZWIAK: Тип кастинг, во наједноставни смисла, е
начин да се смени толкувањето на компјутерот на некои податоци од
имплицитно или експлицитно го менува својот тип на податок.
Како што се промена на int да плови, или обратно.
За да се разбере тип кастинг, ние треба да се
почнете со основите -
типови на податоци себе.
Во компјутерски јазици како C, сите променливи имаат некој вид
на податочен тип кој одредува како компјутер, и исто така
на корисникот, толкува таа променлива.
Нумерички типови на податоци како што се int, долго долго, плови и
двојно, сите имаат свои уникатни карактеристики и се
користи за одредување вредности на различни опсези и прецизност.
Тип на кастинг ни овозможува да се земе број со подвижна запирка, како
3,14 и да добијат дел пред децималната, 3 во овој случај,
со лиење на е int.
Да го земеме еден пример од англиски јазик за кратко
преглед на видови, и да се види како тип кастинг може да се промени
начинот на кој ние се протолкува парче на податоци.
За податоци, ајде да ги симболите тука.
Јас само се однесуваат на овие внимателно конфигурирани линии
симболи, туку како некој кој знае англиски јазик,
можете веднаш да признаеме дека тие се, всушност, букви.
Можете имплицитно подразбира тип на податок.
Гледајќи во оваа низа од букви можеме да видиме две
различни зборови, секој со свој значење.
Тука е именка, ветер, како и во ветрот дува надвор.
И тука е глагол, ветер, како и во што треба да
навивам мојот аналоген часовник.
Ова е интересен пример, затоа што може да се види
како типот што му ја додели на нашите податоци, без разлика дали именка или
глагол, промени како ние ги користиме податоците -
како зборот ветер или ветер.
Иако компјутер не се грижи за граматиката и делови
на англиски говор, на истиот основен принцип важи.
Тоа е, ние може да го промени толкувањето на точната
истите податоци се чуваат во меморијата со едноставно леење на
различен тип.
Еве големини од најчестите видови на 32-битен
оперативен систем.
Имаме знак на 1 бајт, int и плови во 4 бајти, долги
долго и двојно од 8 бајти.
Бидејќи int зазема 4 бајти, тоа ќе потрае до 32 битови
кога се чуваат во меморијата како бинарни серија
на нули и единици.
Додека нашите променлива останува како тип int, на
компјутер секогаш ќе се претвори оние кои и нули од
бинарни во оригиналниот број.
Сепак, ние теоретски би можеле да дадат оние 32
битови во серија на Булова видови.
А потоа на компјутерот веќе не ќе се види голем број, но
наместо збирка на оние кои и нули.
Ние, исто така може да се обидат да ги прочитате податоци како различни нумерички
тип, или дури и како низа од четири карактери.
Кога се занимаваат со броеви во кастинг, мора да сметаат како
прецизноста на својата вредност ќе бидат погодени.
Имајте на ум дека прецизност може да остане иста,
или можете да изгубите прецизност, но никогаш не може да се добие прецизност.
Ајде да одиме преку за трите најчести начини на кои можете да
губат прецизност.
Кастинг плови кон int ќе предизвика truncation на сè
по децималната точка, па си замина
со цел број.
Ако го земеме плови х кој ќе изнесува 3,7, ние може да фрли
оваа променлива X до int со едноставно пишување int во
загради.
Кога ние ги користиме овој термин, токму тука, ние ќе ефикасно
биде со користење на вредноста три бидејќи ние сме скратени
сè по децималната запирка.
Ние, исто така може да се конвертира долго долго на int, кој ќе
Слично да доведе до губење на високи битови.
А долго долго трае до 8 бајти, или 64 бита во меморијата.
Значи кога ќе го фрли на int која има само 4 бајти, или 32
битови, ние сме во суштина секое отсечено сите битови кои
претставуваат повисок бинарни вредности.
Вие исто така може фрли двојно да плови, која ќе им даде
можете најблиската можна плови кон двојната без
мора заокружување неа.
Слична на нашата долго долго да int конверзија, загуби во
прецизност е затоа двојно содржи повеќе податоци.
А двојно ќе ви овозможи да ги чувате 53 значајни битови,
околу 16 значајни цифри.
Каде што плови само што ќе ви овозможи да ги чувате 24
значајни битови, околу седум значајни цифри.
Во последните два случаи, тоа може да биде корисно да се мисли на
тип кастинг како промена на големината на сликата.
Кога одите од голем големина на мала големина, не можете да видите
работи како што е јасно, бидејќи сте ја изгубиле податоци
во форма на пиксели.
Тип на кастинг, исто така, може да предизвика проблеми кога
фрли ints да плови.
Од лебди на 32-битна машина само 24
значајни битови, тие не можат точно да претставуваат вредности
над 2 на моќта на 24, или 16.777.217.
Сега ајде да зборуваме за експлицитни и имплицитни кастинг.
Експлицитно кастинг е кога ние пишуваме типот во загради
пред името на променливата.
Како пример, пред напиша int во загради пред нашите
плови променливата x.
На овој начин, ќе го добиеме int вредност,
скратена вредност од 3,7 -
3.
Имплицитна кастинг е кога на компајлерот автоматски се менува
слични видови на супер тип, или врши некоја друг вид на
кастинг без да се бара од корисникот да пишувам
дополнителни код.
На пример, кога ние додадете 5 и 1.1, нашите вредности веќе имаат
видови поврзани со нив.
На 5 е int, додека 1.1 е плови.
Со цел да ги додадете, компјутерот фрла 5 во плови,
кој би бил исто што и пишување 5,0 во
прво место.
Но, овој начин велиме плови 5, или 5.0, плус она што веќе беше
плови, 1.1, и од таму ние всушност може да додадете овие
вредности и да добијат вредност 6.1.
Имплицитна кастинг исто така ни овозможува да доделите варијабли на
различни видови на едни со други.
Ние секогаш може да доделите помалку прецизни тип во повеќе
прецизни еден.
На пример, ако имаме двојно x, и int y -
и овие може да има некои вредности кои ги постави -
можеме да кажеме x е еднаква на y.
Поради двојната има поголема точност отколку int, така што
не ќе ја изгубат секоја информација.
Од друга страна, тоа не мора да биде точно да се каже
y е еднаква на X, бидејќи двојно би можеле да имаат поголема вредност од
цел број.
И така на број не може да биде во можност да ги собере сите
информации што се зачувани во двојно.
Имплицитна кастинг е исто така се користи во споредба оператори како
поголем од, помалку од или еднаквост оператор.
На овој начин можеме да кажеме ако 5.1 е поголем од 5, и ќе го добиеме
резултира вистина.
Бидејќи 5 е int, но тоа ќе биде фрлен да плови со цел да се
да се спореди со пловка 5,1, ние би рекол 5.1 е
поголема од 5,0.
Истото важи и со велејќи дека ако 2,0 еднаква изнесува 2.
Ние, исто така, ќе добие точно, бидејќи на компјутерот ќе го дадат на
број 2 е да се плови и тогаш велат дека 2,0 еднаква еднаква на 2,0,
тоа е точно.
Не заборавајте дека ние, исто така, може да фрли меѓу ints и карактери,
или ASCII вредности.
Знаци исто така треба да се намали на бинарни, кој е зошто
лесно да ги конвертирате помеѓу карактери и нивните
ASCII вредности.
За да дознаете повеќе за тоа, проверете ја нашата видео на ASCII.
Кога ќе се земе еден миг да се размислува за тоа како податоците се чуваат,
почнува да се направи многу смисла.
Тоа е исто како разликата меѓу ветер и ветер.
Податоците се исти, но од типот може да се промени како
протолкува тоа.
Моето име е Јордан Jozwiak, ова cs50.