[Powered by Google Translate] JORDAN JOZWIAK: тип лиття, в найпростішому сенсі,
спосіб змінити інтерпретацію комп'ютері деякі дані
явно або неявно зміна його типу даних.
Такі, як зміна внутр з поплавцем, або навпаки.
Щоб зрозуміти, приведення типів, ми повинні
Почнемо з основи -
Дані типи самих себе.
У комп'ютерних мов, таких як C, всі змінні мають якийсь
від типу даних, який визначає, як комп'ютер, а також
Користувач, інтерпретує цю змінну.
Чисельні типи даних, такі як INT, довго довго, плавати і
подвійні, всі вони мають свої власні унікальні характеристики і
використовуються для визначення значень різних діапазонів і точності.
Приведення типів дозволяє нам приймати числа з плаваючою точкою, як
3.14 і отримати частину перед десятковою, 3 в даному випадку,
шляхом приведення його до Int.
Давайте візьмемо приклад з англійської мови для короткого
огляд типів і подивитися, як приведення типу може змінитися
Як ми інтерпретувати елемент даних.
За даними, давайте символи тут.
Я просто посилатися на ці ретельно налаштований ліній
символи, але, як хтось, хто знає англійську мову,
Ви відразу визнати, що вони є, по суті, букв.
Ви неявно розуміється тип даних.
Дивлячись на цю рядок літер, ми можемо побачити два
іншими словами, кожен зі своїм власним змістом.
Там в іменник, вітер, як і в вітер дме зовні.
І є дієслово, вітер, як і в Мені потрібно, щоб
вітер мій аналоговий годинник.
Це цікавий приклад, тому що ми бачимо
як тип, який ми приписуємо нашим даними, чи є іменник або
Дієслово, зміни, як ми використовуємо ці дані -
як вітер слово або вітру.
Хоча комп'ютер не піклується про граматику і частин
англійської мови, то ж основний принцип застосовується.
Тобто, ми можемо змінити інтерпретацію точну
ж дані, що зберігаються в пам'яті, просто приведення його до
різних типів.
Ось розміри найбільш поширених типів на 32-розрядних
операційної системи.
У нас є символ в 1 байт, Int і плавати на 4 байти, довго
довго і подвійного на 8 байт.
Тому що Int займає 4 байти, це займе 32 біт
, Коли вона зберігається в пам'яті у вигляді двійкового серії
з нулів та одиниць.
Поки наша змінна залишається як типу INT,
комп'ютер завжди буде конвертувати ці нулі і одиниці з
двійковій у вихідне число.
Тим не менш, ми теоретично могли б кинути ці 32
Біти в серії логічних типів.
І тоді комп'ютер більше не буде бачити номер, але
Замість набору нулів та одиниць.
Ми могли б також спробувати прочитати, що дані у вигляді різних числових
типу, або навіть у вигляді рядка з чотирьох символів.
Коли маєш справу з числами у кастингу, необхідно розглянути, як
Точність ваші цінності будуть зачеплені.
Майте на увазі, що точність може залишитися те ж саме,
або ви можете втратити точність, але ви ніколи не можете отримати точність.
Давайте пройдемося по трьом найбільш поширених способів, які ви можете
втрата точності.
Лиття з плаваючою крапкою в ціле число викличе усікання всі
після коми, так що ви залишили
з цілого числа.
Якщо взяти поплавок х, що буде дорівнює 3,7, ми можемо кинути
ця змінна х в ціле число шляхом простого написання Int в
дужки.
Всякий раз, коли ми використовуємо цей термін тут, ми будемо ефективно
використовувати три значення, тому що ми усіченому
всі після коми.
Ми також може конвертувати довго довго INT, який буде
Точно так само привести до втрати високого порядку бітів.
Довго довго займає 8 байт, або 64 біта в пам'яті.
Тому, коли ми кинули його в ціле число яких тільки 4 байти або 32
бітів, ми, по суті відрубавши всі біти,
являють собою більш високі значення двійкового файлу.
Ви могли б також призвести до подвійних поплавцем, який дасть
Ви найближчий можливий плаваючою крапкою в подвійному без
обов'язково округлення його.
Як і в нашої довгої довго Int перетворення, втрати в
Точність в тому, що подвійні містить додаткові дані.
Подвійна дозволить вам зберігати 53 значущих біт,
приблизно 16 значущих цифр.
У той час як поплавок буде тільки дозволяють зберігати 24
значущих біт, приблизно в сім значущих цифр.
У цих останніх двох випадках, це може бути корисно думати про
приведення типу, як зміна розміру фото.
Коли ви йдете від великого розміру невеликого розміру, ви не можете бачити
речі, як чітко, тому що ви втратили дані
у вигляді пікселів.
Приведення типів також можуть викликати проблеми, коли ми
кинули цілі поплавців.
Так як поплавки на 32-бітної машині тільки є 24
значущих біт, вони не можуть точно представляти значення
більш ніж 2 в ступені 24, або 16777217.
Тепер давайте поговоримо про явних і неявних лиття.
Явне приведення, коли ми пишемо типу в дужках
перед ім'ям змінної.
Наприклад, перш ніж ми писали Int в круглих дужках перед нашими
плавати змінної х.
Таким чином, ми отримуємо цілочисельне значення,
усіченому значенні 3,7 -
3.
Неявне приведення, коли компілятор автоматично змінює
подібного типу в супер типу, або виконує деякі інші роду
лиття не вимагаючи від користувача, щоб написати
додаткового коду.
Наприклад, коли ми додаємо 5 і 1,1, наші цінності вже є
Типи пов'язаних з ними.
5 являє собою ціле число, в той час як 1.1 є поплавець.
Для того, щоб додати їх, комп'ютер ставить під 5 в поплавцем,
які були б те ж саме, як написання 5,0 в
перше місце.
Але цей шлях ми говоримо поплавком 5, або 5,0, плюс те, що вже було
поплавця, 1,1, і звідти ми дійсно можемо додати ці
цінності і отримати значення 6.1.
Неявне приведення також дозволяє призначити змінні
різних типів один з одним.
Ми завжди можемо призначити менш точний тип у більш
точне один.
Наприклад, якщо ми маємо подвійну х, Int у -
і це може мати будь-які значення, які ми ставимо їх -
ми можемо сказати, х = у.
Оскільки подвійне має більшу точність, ніж INT, тому ми
не втратити будь-яку інформацію.
З іншого боку, це не обов'язково буде правильним сказати,
У рівна х, тому що подвійні може мати більше значення, ніж
число.
І так ціле, не могла б вмістити всіх
Інформація, що зберігається в два рази.
Неявне приведення також використовується в операторах порівняння, як
більше, менше або оператора рівності.
Таким чином, ми можемо говорити, якщо 5,1 більше, ніж 5, і ми отримуємо
привести правда.
Тому що 5 є INT, але це буде приведений до поплавка для того, щоб
можна порівняти з поплавцем 5,1, ми б сказали, 5.1,
більше 5,0.
Те ж саме відноситься і кажу, якщо дорівнює 2,0 дорівнює 2.
Ми б також отримати істинне, тому що комп'ютер буде відкидати
ціле число 2, щоб плавати, а потім сказати дорівнює 2,0 дорівнює 2,0,
це правда.
Не забувайте, що ми також можемо кинути між цілими і символів,
або ASCII значення.
Символи також повинні бути зведені до двійковим, тому ви
можете легко конвертувати між символи та відповідні їм
ASCII значення.
Щоб дізнатися більше про це, ознайомтесь з нашими відео на ASCII.
Коли ви берете час, щоб думати про те, як дані зберігається,
він починає робити багато сенсу.
Це як різниця між вітром і вітру.
Дані ж, але вигляд може змінитися, як ми
інтерпретувати.
Мене звуть Джордан Jozwiak, це CS50.