[Powered by Google Translate] ЙОРДАНИЯ JOZWIAK: Тип леене, в най-простия смисъл на думата, е
начин да променят тълкуването на компютъра, на някои данни от
имплицитно или експлицитно промяна на типа данни.
Такива като промяна на едно цяло число с плаваща запетая, или обратното.
За да се разбере леене тип, ние трябва да
започнете с основите -
данни самите видове.
В компютърните езици като C, всички променливи имат някакъв вид
на данни тип, който определя как компютърът, така и
потребителя, интерпретира тази променлива.
Числени типове данни като INT, дълго, дълго, флоат и
двойни, всички имат свои собствени уникални характеристики и са
използва за определяне на стойностите на различни диапазони и прецизни.
Вид леене ни позволява да предприемем число с плаваща запетая като
3.14 и да получите част преди десетичната, 3 в този случай,
като го хвърля на вътр.
Да вземем един пример от английски език за кратко
преглед на видове, както и да видите как да промените тип леене
начина, по който ние тълкуваме част от данните.
За данни, нека да символите тук.
Се отнасят само до тези внимателно конфигурирани линии, като
символи, а като някой, който знае английски език,
незабавно да признае, че те са в действителност, писма.
Се подразбират типа на данните.
Поглед към тази поредица от букви, ние може да видите два
различни думи, всяка със собствен смисъл.
Има съществителното, вятър, както и в духа вятър извън.
И там е глагол, вятър, както и в трябва да
внесено ми аналогов часовник.
Това е интересен пример, защото можем да видим
как от типа, който ние определяме нашите данни, независимо дали е съществително или
глагол, промени начина, по който използва тези данни -
като думата вятъра или вятър.
Въпреки че компютърът не се интересува от граматиката и части
на английската реч, едни и същи основни принципа.
Това означава, че ние можем да променим тълкуване на точния
едни и същи данни, съхранени в паметта, като просто го хвърля на
различен тип.
Тук са размерите на най-често срещаните видове на 32-битов
операционната система.
Ние имаме знак в 1 байт, вътр и поплавъка при 4 байта,
дълго и двойно 8 байта.
Тъй като едно цяло число заема 4 байта, тя ще отнеме 32 бита
когато тя се съхранява в паметта като двоичен серия
от нули и единици.
Тъй като нашата променлива остава като тип INT,
компютър винаги ще конвертирате тези нули и единици от
двоичен в оригиналния номер.
Въпреки това, ние теоретично би могла да хвърли тези 32
бита в серия на булеви типове.
И след това на компютъра вече няма да видите номера, но
вместо сбор от нули и единици.
Ние също може да опитате да прочетете, че данните по различен числов
вид, или дори като низ от четири знака.
Когато се работи с числа в леене, трябва да се помисли как
точността на стойността си, ще бъдат засегнати.
Имайте предвид, че точността може да остане същото,
или могат да загубят точност, но никога няма да спечелят прецизност.
Нека да мине през за трите най-често срещаните начини, по които можете да
губят точност.
Кастинг с плаваща запетая на вътр ще доведе до отрязване на всичко
след десетичната запетая, така че сте останали
с цяло число.
Ако вземем х поплавък, който ще се равнява на 3.7, може да хвърли
тази променлива х вътр от просто писане на Int в
скоби.
Всеки път, когато ние използваме този термин тук, ние ще ефективно
се използва стойността три, защото сме пресечен
всичко след десетичната запетая.
Можем също така да конвертирате дълго на вътр, която ще
по същия начин да доведе до загуба на битове.
А дълго заема 8 байта, или 64 бита в паметта.
Така че, когато ние да се хвърли едно цяло число, което има само четири байта, или 32
бита, ние по същество са отсичайки всички битове, че
представляват по-високите стойности двоични.
Вие също може да хвърли двойно поплавък, който ще даде
възможно най-плаващо в двойно, без да
задължително закръгляване.
Подобно на дългогодишния ни дълъг, за да INT преобразуване, загубата на
точност, защото двойно съдържа повече данни.
Двойно ще ви позволи да съхранявате 53 значими бита,
около 16 значещи цифри.
Като има предвид, че с плаваща запетая само ще ви позволи да съхранявате 24
значими бита, около седем значещи цифри.
В последните два случая, може да е полезно да се мисли за
въведете леене, преоразмеряване на снимка.
Когато отидете голям размер малък размер, не можете да видите
нещата толкова ясно, защото сте загубили данни
под формата на пикселите.
Леене Вид също може да предизвика проблеми, когато ние
хвърли цели числа, за да плува.
Тъй като плувки на 32-битова машина има само 24
битове, те не могат да отразяват точно стойности
над 2 силата на 24 или 16777217.
Сега нека поговорим за експлицитно и имплицитно леене.
Изрично леене е, когато пишем типа в скоби
пред името на променливата.
Като пример, преди да пише Int в скоби преди
плаваш променливата х.
По този начин, ние получаваме вътр. Стойност,
пресечен стойност от 3,7 -
3.
Implicit леене е, когато компилаторът автоматично се променя
подобни видове супер тип, или извършва някакъв друг вид
леене, без да е необходимо потребителят да пиша
допълнителен код.
Например, когато добавите 5 и 1.1, нашите ценности вече имат
видове свързани с тях.
5 е вътр, докато 1.1 е с плаваща запетая.
За да ги добавите, компютърът хвърля 5 в поплавъка,
, които биха били едно и също нещо като писмено 5.0 в
първо място.
Но по този начин ние казваме плувка 5 или 5.0, плюс това, което вече е
поплавък, 1.1, и от там ние всъщност може да ги добавите
ценности и да получите стойност 6,1.
Implicit леене също така ни позволява да зададете променливи на
различни видове един към друг.
Ние винаги може да зададете по-малко точни тип в по-
точно един.
Например, ако имаме двойно X, и вътр г. -
и те биха могли да имат някакви ценности, които ги оставят да
можем да кажем х равен г..
Тъй като има двойно по-голяма точност, отколкото едно цяло число, така че ние
няма да загубят всякаква информация.
От друга страна, тя не би правилно да се каже
г. се равнява на х, защото може да има двойно по-голяма стойност, отколкото
цяло число.
И така цяло число може да не е в състояние да побере всички
информация, съхранявана в двойно.
Implicit леене се използва също и в сравнение оператори като
по-голяма, по-малка или равенство оператор.
По този начин можем да кажем, ако 5.1 е по-голяма от 5, и получаваме
доведе вярно.
Тъй като 5 е ПНА, но тя ще се хвърли с плаваща запетая, за да се
да се сравни с плувка 5,1, бихме казали, 5.1 е
по-голяма от 5,0.
Същото е вярно, че ако се равнява на 2.0, се равнява на 2.
Бихме искали също така да получите вярно, защото компютърът ще хвърли
число 2 да плува и след това да се каже, се равнява на 2.0, се равнява на 2,0,
това е вярно.
Не забравяйте, че ние също може да хвърли между цели числа и символа,
или ASCII стойности.
Герой също трябва да бъде намален до двоичен, поради което
можете лесно да конвертирате между символа и техните съответни
ASCII стойности.
За да научите повече за това, вижте нашето видео на ASCII.
Когато отделете малко време да мисля за това как данните се съхранява,
започва да се направи много смисъл.
Това е точно като разликата между вятър и вятър.
Данните са едни и същи, но тип може да се промени, ние как
интерпретира.
Казвам се Йордан Jozwiak, това cs50.