Разница между приведением типов и преобразованием типов

Автор: Laura McKinney
Дата создания: 1 Апрель 2021
Дата обновления: 4 Май 2024
Anonim
Приведение типов в стиле с. Явное и неявное преобразование типов. Преобразование типов. С++ Урок #61
Видео: Приведение типов в стиле с. Явное и неявное преобразование типов. Преобразование типов. С++ Урок #61

Содержание


Основное различие между преобразованием типов и приведением типов, то есть преобразование типов выполняется «автоматически» компилятором, тогда как приведение типов должно «явно выполняться» программистом.

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

  1. Сравнительная таблица
  2. Определение
  3. Ключевые отличия
  4. Вывод

Сравнительная таблица:

Основа для сравненияТип литьяПреобразование типов
СмыслОдин тип данных назначается другому пользователем с помощью оператора приведения, тогда он называется «Приведение типов».Преобразование одного типа данных в другой автоматически с помощью компилятора называется «Преобразование типов».
прикладнойПриведение типов также может применяться к двум несовместимым типам данных.Преобразование типов может быть реализовано только тогда, когда два типа данных совместимы.
операторДля приведения типа данных к другому требуется оператор приведения ().Оператор не требуется.
Размер типов данныхТип назначения может быть меньше, чем тип источника.Здесь тип назначения должен быть больше, чем тип источника.
РеализованЭто делается во время разработки программы.Это делается явно при компиляции.
Тип конверсии

Сужение конверсии.Расширяется конверсия.
примерint a;
байт b;
...
...
б = (байт) а;
int a = 3;
плавать б;
Ь = а; // значение в b = 3.000.


Определение типа литья

Тип литья может быть определено программистом как приведение одного типа данных к другому типу во время разработки программы. Автоматическое преобразование одного типа данных в другой невозможно все время. Может быть условие, что «тип назначения» меньше, чем «тип источника». Следовательно, программист должен явным образом преобразовывать больший тип данных в меньший тип данных, используя оператор приведения «()». Поскольку больший тип данных модулируется к меньшему типу данных, это также называется «сужающим преобразованием».

Декларация:

destination_type = (target_type) variable / value // target type - это тип, в который вы хотите преобразовать тип источника, это всегда тип назначения.

пример

Давайте разберемся с примером. Вы хотите преобразовать тип данных "int" в "byte". Теперь, поскольку «byte» меньше, чем «int», преобразование типов не допускается. Здесь мы должны были неявно преобразовать «int» в «byte», используя оператор приведения «()». Поскольку значение «int» больше, чем «byte», размер «int» будет уменьшен до диапазона «int mod byte».


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

Когда «float» преобразуется в «int», размер float усекается, так как «int» не сохраняет дробное значение. Если размер целевого типа слишком мал для исходного типа, то тип источника по модулю является целевым типом «диапазон». Приведение может также применяться, когда типы данных совместимы. Хорошей практикой является использование приведения типов везде, где необходимо преобразование типов.

Определение преобразования типа

Тип преобразования это автоматическое преобразование одного типа данных в другой, когда это требуется, выполняемое явно компилятором. Но перед преобразованием типов необходимо выполнить два условия.

  • Тип источника и назначения должен быть совместимым.
  • Тип назначения должен быть больше, чем тип источника.

Эти два условия должны удовлетворять достижению преобразования типов, и этот вид преобразования называется «расширяющим преобразованием», так как меньший тип преобразуется в больший тип, происходит расширение типа. Для этого расширяющегося преобразования числовые типы, такие как «int», «float», совместимы друг с другом, в то время как числовые в char и логические или char в boolean также не совместимы.

пример

Этот пример обеспечит лучшее представление об этом

int a = 3; плавать б; Ь = а; // значение в b = 3.000.

Здесь «int» преобразуется в «float», который больше, чем «int», поэтому происходит расширение типа источника. Здесь не требуется оператор приведения, поскольку компилятор сделает это явно.

  1. Основное отличие, которое отличает приведение типов от преобразования типов, состоит в том, что приведение типов - это преобразование одного типа в другой, выполняемое программистом. С другой стороны, преобразование типов - это преобразование одного типа в другой, выполняемое компилятором во время компиляции.
  2. Приведение типов может применяться к типам данных, которые могут быть несовместимы друг с другом. И наоборот, преобразование типов может применяться только к тем типам данных, которые совместимы друг с другом.
  3. Преобразование одного типа в другой при приведении типов требует оператора приведения «()», в то время как преобразование одного типа данных в другой при преобразовании типов не требует какого-либо оператора.
  4. При преобразовании одного типа данных в другой при приведении типа тип назначения может быть больше или меньше, чем тип источника. В отличие от этого, тип назначения должен быть больше, чем тип источника при преобразовании типов.
  5. Преобразование одного типа в другой тип выполняется во время кодирования при приведении типов. Напротив, при преобразовании типов преобразование одного типа в другой выполняется явно во время компиляции.
  6. Приведение типов называется сужающим преобразованием, потому что здесь тип назначения может быть меньше, чем тип источника. В отличие от этого, преобразование типов называется расширяющим преобразованием, поскольку здесь тип назначения должен быть больше, чем тип источника.

Вывод:

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