Преобразования приведений типов
Приведения типов можно использовать для явного преобразования типов.
Синтаксис
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 *
исходный тип и обратно, возвращается к исходному значению.