Введение

Изменение выражения из одного типа данных в другой, процесс лицензирования в авиации. В информатике преобразование типа, приведение типа, принудительное преобразование типа – это различные способы изменения выражения из одного типа данных в другой. Примером может служить преобразование целочисленного значения в значение с плавающей точкой или его текстовое представление в виде строки и наоборот. Преобразования типов могут использовать определенные особенности иерархий типов или представлений данных. Два важных аспекта преобразования типа – это то, происходит ли оно неявно (автоматически) или явно, и преобразуется ли базовое представление данных из одного формата в другой, или же существующее представление просто переинтерпретируется как представление другого типа данных. В общем случае, могут быть преобразованы как примитивные, так и составные типы данных. Каждый язык программирования имеет свои правила преобразования типов. Языки со строгой типизацией обычно выполняют мало неявных преобразований и препятствуют переинтерпретации представлений, в то время как языки со слабой типизацией выполняют множество неявных преобразований между типами данных. Языки со слабой типизацией часто позволяют принудить компилятор произвольно интерпретировать элемент данных как имеющий различные представления – это может быть неочевидная ошибка программирования или технический метод для непосредственной работы с базовым аппаратным обеспечением. В большинстве языков термин "принуждение" используется для обозначения неявного преобразования, выполняемого либо во время компиляции, либо во время выполнения. Например, в выражении, содержащем целые числа и числа с плавающей точкой (например, 5 + 0.1), компилятор автоматически преобразует целочисленное представление в представление с плавающей точкой, чтобы избежать потери дробной части. Явные преобразования типа указываются либо путем написания дополнительного кода (например, добавления идентификаторов типа или вызова встроенных процедур), либо путем кодирования процедур преобразования для использования компилятором в случае возникновения ошибки несоответствия типов. В большинстве языков семейства ALGOL, таких как Pascal, Modula 2, Ada и Delphi, преобразование и приведение типа – это различные понятия. В этих языках преобразование относится к изменению значения из одного формата хранения типа данных в другой, как явно, так и неявно, например, из 16-битного целого числа в 32-битное целое число. В результате преобразования могут измениться требования к хранению, включая возможную потерю точности или усечение. Приведение типа, с другой стороны, относится к явному изменению интерпретации битового шаблона, представляющего значение, от одного типа к другому. Например, 32 последовательных бита могут рассматриваться как массив из 32 булевых значений, 4-байтовая строка, 32-битное целое число без знака или значение IEEE одинарной точности с плавающей точкой. Поскольку хранимые биты не изменяются, программист должен знать детали низкого уровня, такие как формат представления, порядок байтов и требования к выравниванию, чтобы выполнить приведение типа осмысленно. В языках семейства C и ALGOL 68 термин "приведение типа" обычно относится к явному преобразованию типа (в отличие от неявного преобразования), что может вызывать неоднозначность в отношении того, является ли это переинтерпретацией битового шаблона или преобразованием реального представления данных. Более важным является множество способов и правил, применяемых к тому, какой тип данных (или класс) находится по указателю и как компилятор может корректировать указатель в случаях, таких как наследование объектов (классов).

Эда

Ada предоставляет универсальную библиотечную функцию Unchecked Conversion.

Неявный отлив с использованием немаркированных соединений

Многие языки программирования поддерживают объединения, которые могут хранить значение нескольких типов. Немаркированные объединения предоставляются в некоторых языках со слабой проверкой типов, таких как C и PL/I, а также в оригинальном Pascal. Их можно использовать для интерпретации битового представления одного типа как значения другого типа.

Вопросы безопасности

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