Преобразования приведений типов
Приведения типов можно использовать для явного преобразования типов.
Синтаксис
выражение-приведения:
унарное выражение( имя-типа ) выражение-приведения
имя-типа:
список-спецификаторов-и-квалификаторов абстрактный-декларатор необ
Имя-типа представляет тип, а выражение-приведения — значение, которое требуется преобразовать в этот тип. Выражение с приведением типов не является L-значением. Выражение-приведения преобразуется так, как если бы оно было присвоено переменной типа, определяемого элементом имя-типа. Правила преобразования при операциях присваивания (рассмотренные в разделе Преобразования при присваивании) применяются также для приведения типов. В следующей таблице показаны типы, которые могут приводиться к любому заданному типу.
Допустимые приведения типов
Целевые типы |
Потенциальные источники |
---|---|
Целочисленные типы |
Любой целочисленный тип, тип с плавающей запятой или указатель на объект |
С плавающей запятой |
Любой арифметический тип |
Указатель на объект или (void *) |
Любой целочисленный тип (void *), указатель на объект или указатель функции |
Указатель на функцию |
Любой целочисленный тип, указатель на объект или указатель функции |
Структура, объединение или массив |
Нет |
Тип void |
Любой тип |
Любой идентификатор можно привести к типу void. Однако если тип, указанный в выражении приведения типа, отличается от типа void, идентификатор, приводимый к этому типу, не может быть выражением void. Любое выражение можно привести к типу void, но выражение типа void невозможно привести к любому другому типу. Например, функция с возвращаемым типом void не может иметь обратное приведение к другому типу.
Обратите внимание, что выражение void * имеет указатель типа на void, а не тип void. Если объект приводится к типу void, результирующее выражение невозможно присвоить никакому элементу. Аналогично объект приведения типа не является приемлемым L-значением, поэтому для такого объекта невозможно выполнить присваивание.
Блок, относящийся только к системам Microsoft
Приведение типа может быть выражением L-значения, если размер идентификатора не изменяется. Дополнительные сведения о выражениях L-значений см. в разделе Выражения L-значений и R-значений.
Завершение блока, относящегося только к системам Microsoft
Выражение можно преобразовать в тип void с помощью приведения, но результирующее выражение можно использовать только в том случае, если значение не требуется. Указатель объекта, преобразованный в тип void * и обратно в исходный тип, возвращается к своему исходному значению.