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


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

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

Синтаксис

cast-expression:
unary-expression
( type-name ) cast-expression

type-name:
specifier-qualifier-list abstract-declaratorнеоб.

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

Целевые типы Потенциальные источники
Целочисленные типы Любой целочисленный тип, тип с плавающей запятой или указатель на объект
С плавающей запятой Любой арифметический тип
Указатель на объект или void * Любой целочисленный тип, void *указатель на объект или указатель функции
Указатель на функцию Любой целочисленный тип, указатель на объект или указатель функции
Структура, объединение или массив нет
Тип void Любой тип

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

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

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

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

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

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

См. также

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