
- •Предисловие.
- •1.1. Алфавит языка Си.
- •1.2. Идентификаторы.
- •1.3. Служебные (ключевые) слова.
- •1.4.Типы данных.
- •1.5. Константы.
- •1.5.1.Арифметические константы.
- •1.5.2. Вещественные константы.
- •1.5.3. Символьные и строковые константы.
- •1.6. Переменные.
- •1.7.Выражения.
- •1.8. Операции.
- •1.9. Приведение типов.
1.9. Приведение типов.
Операция явного преобразования типов.
1. Формат операции
(имя типа) операнд;
В качестве операнда могут использоваться константы, переменные, выражения. В результате выполнения операции значение операнда преобразуется к указанному типу.
Примеры:
long(17), float(21), int(a + b);
2. Почти для каждой из бинарных операций операнды могут иметь различные типы. Однако не всегда необходимо в явном виде указывать преобразования типов. Если операнды бинарной операции имеют различные типы, то компилятор выполняет преобразование типов автоматически, т.е. приводит оба операнда к одному типу. Такие преобразования выполняются по определенным правилам; эти правила определены стандартом языка Си.
Среди преобразований типов выделяют
- преобразования в арифметических выражениях;
- преобразования при присваиваниях; заметим, что для операции присваивания значения выражения из правой части всегда приводится к типу переменной из левой части, независимо от соотношения этих типов.
-преобразования указателей (будут рассмотрены в дальнейшем).
Необходимо различать преобразования, изменяющие внутреннее представление данных и преобразования, изменяющие только интерпретацию внутреннего представлении. Например, преобразование unsigned int в int не требует преобразования внутреннего представления, а преобразования типа int в тип float (или наоборот) требует изменения длины участка памяти и кодировки.
Ниже приведены арифметические преобразования типов, гарантирующие сохранение значения:
signed char -> short -> int -> long;
float -> double -> long double;
unsigned char -> unsigned short -> unsigned int -> unsigned long.
При преобразованиях, которые не включены в схему, возможны существенные информационные потери.