Рекомендуємо, 2024

Вибір Редакції

Різниця між типом лиття та перетворенням типів

Два терміни «тип лиття» і «перетворення типу» відбуваються, коли існує потреба перетворити один тип даних в інший. Коли два типи сумісні один з одним, перетворення одного типу в інше здійснюється автоматично компілятором. Однак існує принципова відмінність між перетворенням типів і типом типу, тобто перетворення типу виконується «автоматично» за допомогою компілятора, тоді як програміст повинен «явно виконати» приведення типу. Давайте обговоримо різницю як типу, так і перетворення за допомогою діаграми порівняння.

Діаграма порівняння:

Основа для порівнянняТип литтяПеретворення типу
ЗначенняОдин тип даних присвоюється іншому користувачем, використовуючи оператор cast, потім він називається "Type Casting".Перетворення одного типу даних в інший автоматично компілятором називається "Тип перетворення".
ЗастосовуєтьсяПриведення типу може також застосовуватися до двох типів даних "несумісних".Перетворення типу може бути реалізовано тільки тоді, коли два типи даних є "сумісними".
ОператорДля перенесення типу даних в інший, оператор лиття '()' є обов'язковим.Оператор не потрібен.
Розмір типів данихТип призначення може бути меншим за тип джерела.Тут тип призначення повинен бути більшим за тип джерела.
РеалізованоЦе робиться під час розробки програми.Це робиться явно під час компіляції.
Тип конверсії
Звуження конверсії.Розширення конверсії.
Прикладint a;
байт b;
...
...
b = (байт) a;
int a = 3;
float b;
b = a; // значення в b = 3.000.

Визначення типу лиття

Визначення типу може бути визначено як, перенесення одного типу даних на інший тип даних, програмістом, на момент розробки програми. Автоматичне перетворення одного типу даних в інший неможливо весь час. Це може бути умова, що "тип призначення" менше, ніж "тип джерела", отже, програміст повинен чітко вказати більший тип даних на менший тип даних, використовуючи оператор casting '()'. Оскільки більший тип даних модулюється до меншого типу даних, його також називають 'звуженням перетворення'.

Декларація:

 destination_type = (target_type) змінної / значення // тип цілі - це тип, у якому потрібно перетворити тип джерела, який завжди є типом призначення. 

Розберемося з прикладом. Ви хочете перетворити тип даних 'int' на 'байт', тепер, оскільки 'байт' менше, ніж 'int', перетворення типу не допускається. Тут ми повинні були неявно перетворити 'int' у 'байт' за допомогою оператора casting '()'. Оскільки 'int' більше, ніж 'байт', розмір 'int' буде зменшено до діапазону “int mod byte”.

 int a; байт b; ... ... b = (байт) a; 

Коли 'float' перетворюється на 'int', розмір float буде скорочено, оскільки 'int' не зберігає дробове значення. Якщо розмір типу призначення занадто малий для типу джерела, щоб він містився, то тип джерела - це тип діапазону призначення за модулем. Лиття також може бути застосовано, коли типи даних сумісні, це добре, щоб використовувати тип лиття там, де потрібне перетворення типу.

Визначення перетворення типів

Перетворення типу - це автоматичне перетворення одного типу даних в інший, коли це потрібно, виконане явно компілятором. Але існує дві умови, які необхідно виконати перед перетворенням типу.

  • Тип джерела та призначення повинні бути сумісними.
  • Тип призначення має бути більшим за тип джерела.

Ці дві умови повинні задовольняти, щоб досягти перетворення типу, і цей тип перетворення називається "розширеним перетворенням", оскільки менший тип перетворюється на більший тип, відбувається розширення типу. Для цього розширення перетворення числові типи як "int", "float" сумісні один з одним, тоді як числове значення для символів і булевих чи char для boolean також не сумісні.

Цей приклад надасть краще уявлення про це

 int a = 3; float b; b = a; // значення в b = 3.000. 

Тут 'int' перетворюється на 'float', що більше, ніж 'int', тому відбувається розширення типу джерела. Тут ніякий оператор лиття не потрібно, оскільки компілятор зробить це явно.

Основні відмінності між типом лиття та перетворенням

  1. Основною відмінністю, яка відрізняє тип перетворення від перетворення типу, є те, що приведення типу є перетворенням одного типу в інший, виконаним програмістом. З іншого боку, перетворення типу є перетворенням одного типу в інший, що виконується компілятором під час компіляції.
  2. Типи типу можуть бути застосовані до типів даних, які можуть бути не сумісні один з одним, але перетворення типу може бути застосоване тільки до типів даних, які сумісні один з одним.
  3. Перетворення одного типу в інший при виклику типу вимагає оператора лиття «()», тоді як перетворення одного типу даних в інший при перетворенні типу не вимагає жодного оператора.
  4. При перетворенні одного типу даних в інший типу приведення, тип призначення може бути більшим або меншим, ніж тип джерела. З іншого боку, тип призначення повинен бути більшим, ніж тип джерела в перетворенні типу.
  5. Перетворення одного типу в інший виконується при кодуванні в типі, тоді як при перетворенні типу перетворення одного типу в інший здійснюється явно під час компіляції.
  6. Тип відправлення називається звуженням, оскільки тут тип призначення може бути меншим, ніж тип джерела, тоді як перетворення типу називається розширеним перетворенням, оскільки тут тип призначення повинен бути більше, ніж тип джерела.

Висновок:

Можна зробити висновок, що перетворення типів і тип виведення виконують завдання перетворення одного типу даних в інший, але відрізняються в тому сенсі, що приведення типу виконується програмістом, використовуючи оператор cast ()) і перетворення типу здійснюється за допомогою компілятор, і він не використовує жодного оператора.

Top