Преобразования приведений типов
Приведения типов можно использовать для явного преобразования типов.
Синтаксис
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-значением, поэтому нельзя присваивать объекту приведения типа.
Блок, относящийся только к системам Microsoft
Приведение типа может быть выражением l-значения, если размер идентификатора не изменяется. Дополнительные сведения о левосторонних значениях см. в статье Выражения L-Value и R-Value.
Завершение блока, относящегося только к системам Майкрософт
Выражение можно преобразовать в тип void
с приведением, но результирующее выражение можно использовать только в том случае, если значение не требуется. После преобразования в тип void *
и обратно в исходный тип любой указатель объекта возвращается к своему исходному значению.
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по