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

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

Синтаксис

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

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

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

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

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

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

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

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

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

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

См. также

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