- Приведение типов
-
Приведе́ние ти́па (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.