Перейти к содержанию

Преобразование типов

Типы, относящиеся к одной категории, так же, как и различную валюту, можно конвертировать друг в друга. И точно также при этом могут возникнуть несостыковки. Представьте, что вам необходимо обменять евро на доллары, которые стоят в два раза дешевле. При этом они существуют только в виде купюр номиналом в один доллар. При таких условиях за одно евро вы получите два доллара. В случае роста курса доллара обмен без остатка стал бы невозможен. Если бы евро стоило полтора доллара, то при обмене вы бы получили только один доллар, так как номинала в половину доллара не существует. Другими словами, вы потеряли бы часть своих доходов. Точно так же и с типами — при их конвертации может происходить частичная потеря данных.

Преобразование типов — очень важная часть типизированного мира.

Преобразование типов (type conversion, typecasting) — это процесс, заключающийся в преобразовании (конвертации) значения одного типа в значение другого типа. Преобразование - очень важная часть типизированного мира, работать с которой приходится постоянно. Поэтому понимать тонкости данного процесса очень важно.

Преобразования типов делятся на явные и неявные преобразования.

Неявные Преобразования

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

Примером неявного преобразования может служить преобразование значения типа int в тип double. Являясь 64-битным вещественным типом, double может хранить любое значение 32-битного целочисленного типа int.

Неявные Преобразования

Как показано на изображении выше, преобразование int в double не приводит к потере данных, так как 32-битное значение умещается в 64 битах.

Явные Преобразования

Явные преобразования, которые для ясности часто называют приведением типов, происходят при участии разработчика и требуют указания языковых конструкций, называемых операторами приведения. Приведение типов требуется тогда, когда в процессе преобразования данные могут быть утрачены или по каким-то причинам процесс может завершиться ошибкой. По аналогии из жизни данный процесс сопоставим с ранее приведенным примером, в котором евро стоило полтора доллара, то есть обмен без потери невозможен.

Самым простым примером явного преобразования служит преобразование типа double, используемого для хранения 64-битных значений с плавающей запятой, к целочисленному типу int.

Явные Преобразования

Изображение выше демонстрирует потерю данных при преобразовании 64-битного типа double к 32-битному типу int.

Комментарии