Приведение типов

Приведение типов

Приведе́ние ти́па (type conversion) — весьма важная часть многих языков программирования, в особенности функциональных.

Означает этот термин следующее: если в какой-то момент тип переменной в составе выражения не задан, он просчитывается (выводится) автоматически.

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

Естественно, существуют ситуации, когда для автоматического приведения типов данных недостаточно, тогда применяется явное приведение типа, то есть программист задаёт к какому типу следует привести выражение.

Существует два способа приведения типа:

Неявное приведение типа

Это автоматическое приведение типа, выполняемое компилятором. В выражении, состоящем из операндов различных типов значения одного или нескольких подтипов могут быть преобразованы к супертипу(более общему типу данных) для корректного выполнения программы. К примеру, ниже приведена часть кода на языке Си:

 double  d;
 long    l;
 int     i; 
 
 if (d > i)      d = i;
 if (i > l)      l = i;
 if (d == l)     d *= 2;

Здесь переменные d, l и i принадлежат к различным типам. Каждый раз при выполнени операции сравнения или присваивания они будут приведены к единому типу. Следует с осторожностью использовать неявное приведение типа, т.к. это в некоторых случаях может привести к непредсказуемому результату. При переводе числа из вещественного типа в целочисленный, дробная часть откидывается. Обратное приведение из целочисленного типа к вещественному также может привести к понижению точности, что связано с различным представлением вещественных и целочисленных чисел на машинном уровне. К примеру, вещественный тип single стандарта IEEE 754 не может точно представлить число 16777217, в то время как 32-битный целочисленный тип может. Это может привести к ситуациям, когда сравнение на равенство одного и тогоже числа, представленного типами int и single будет выдавать ложный результат (числа не равны друг другу).

Явное приведение типа

В языке C

Для явного приведения типов некоторой переменной перед ней следует указать в круглых скобках имя нового типа, например:

int X; int Y = 200; char C = 30; X = (int)C * 10 + Y;//переменная С приведена к типу int.


Если бы в этом примере не было выполнено явное приведение типов, то компилятор предположил бы, что выражение С * 10 + У переменной Х было бы присвоено значение 640, а не корректное 3200. В результате приведения типа переменная С распознается компилятором как 16-ти разрядная, и описанной выше ошибки не возникает.


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Приведение типов" в других словарях:

  • Приведение типа — (type conversion) преобразование значения переменной одного типа в значение другого типа. Выделяют явное и неявное приведения типов. При явном приведении указывается тип переменной, к которому необходимо преобразовать исходную переменную. При… …   Википедия

  • Вывод типов — Типизация данных Типобезопасность Вывод типов Динамическая типизация Статическая типизация Строгая типизация Мягкая типизация Зависимые типы Утиная типизация Вывод типа (англ. Type inference)  в программировании возможность компилятора… …   Википедия

  • Понижающее приведение — В объектно ориентированном программировании, понижающее приведение (англ.  downcasting) или «уточнение типа» (англ. type refinement)  акт приведения типа, ссылающегося на базовый класс, к одному из его производных классов. В… …   Википедия

  • Сравнение языков программирования — Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей.  Условные обозначения  …   Википедия

  • C++ — У этого термина существуют и другие значения, см. C. См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в …   Википедия

  • Сравнение C Sharp и Java — Правильный заголовок этой статьи  Сравнение C# и Java. Он показан некорректно из за технических ограничений. Сравнения языков программирования Общее сравнение Основной синтаксис Основные инструкции Массивы Ассоциативные массивы Операции со… …   Википедия

  • С++ — См. также: Си (язык программирования) C++ Семантика: мультипарадигмальный: объектно ориентированное, обобщённое, процедурное, метапрограммирование Тип исполнения: компилируемый Появился в: 1985 г. Автор(ы): Бьёрн Страуструп …   Википедия

  • Строгая типизация — Типизация данных Типобезопасность Вывод типов Динамическая типизация Статическая типизация Строгая типизация Мягкая типизация Зависимые типы Утиная типизация Строгая типизация  один из вариантов политики работы с типами данных, которая… …   Википедия

  • D (язык программирования) — У этого термина существуют и другие значения, см. D. D Семантика: мультипарадигменный: императивное, объектно ориентированное, обобщённое программирование Тип исполнения: компилятор Появился в: 1999 Автор(ы) …   Википедия

  • Coq — (фр. coq  петух)  интерактивное программное средство доказательства теорем, использующее собственный язык функционального программирования (Gallina) с зависимыми типами. Позволяет записывать математические теоремы и их… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»