Поделиться через


Преобразования приведений типов

Приведения типов можно использовать для явного преобразования типов.

Синтаксис

  • выражение-приведения:
    унарное выражение

    ( имя-типа ) выражение-приведения

  • имя-типа:
    список-спецификаторов-и-квалификаторов абстрактный-декларатор необ

Имя-типа представляет тип, а выражение-приведения — значение, которое требуется преобразовать в этот тип. Выражение с приведением типов не является L-значением. Выражение-приведения преобразуется так, как если бы оно было присвоено переменной типа, определяемого элементом имя-типа. Правила преобразования при операциях присваивания (рассмотренные в разделе Преобразования при присваивании) применяются также для приведения типов. В следующей таблице показаны типы, которые могут приводиться к любому заданному типу.

Допустимые приведения типов

Целевые типы

Потенциальные источники

Целочисленные типы

Любой целочисленный тип, тип с плавающей запятой или указатель на объект

С плавающей запятой

Любой арифметический тип

Указатель на объект или (void *)

Любой целочисленный тип (void *), указатель на объект или указатель функции

Указатель на функцию

Любой целочисленный тип, указатель на объект или указатель функции

Структура, объединение или массив

Нет

Тип void

Любой тип

Любой идентификатор можно привести к типу void. Однако если тип, указанный в выражении приведения типа, отличается от типа void, идентификатор, приводимый к этому типу, не может быть выражением void. Любое выражение можно привести к типу void, но выражение типа void невозможно привести к любому другому типу. Например, функция с возвращаемым типом void не может иметь обратное приведение к другому типу.

Обратите внимание, что выражение void * имеет указатель типа на void, а не тип void. Если объект приводится к типу void, результирующее выражение невозможно присвоить никакому элементу. Аналогично объект приведения типа не является приемлемым L-значением, поэтому для такого объекта невозможно выполнить присваивание.

Блок, относящийся только к системам Microsoft

Приведение типа может быть выражением L-значения, если размер идентификатора не изменяется. Дополнительные сведения о выражениях L-значений см. в разделе Выражения L-значений и R-значений.

Завершение блока, относящегося только к системам Microsoft

Выражение можно преобразовать в тип void с помощью приведения, но результирующее выражение можно использовать только в том случае, если значение не требуется. Указатель объекта, преобразованный в тип void * и обратно в исходный тип, возвращается к своему исходному значению.

См. также

Основные понятия

Преобразования типов (C)