Выражения могут быть преобразованы из одного типа в другой явным указанием. Выражение E может быть явно преобразовано к типу имя-типа с помощью записи вида
(имя - типа) Е где имя типа представляется в форме
указатель-типа абстрактный-описатель Абстрактный описатель аналогичен описателю, за исключением того, что он не содержит определяемого или описываемого идентификатора. Смысл слов имя-типа, представляемого в форме
Т абстрактный описатель где Т является указателем типа, может быть определен одним из таких способов:
- форма абстрактного описателя - смысл слов " Т абстрактный описатель ";
- пустой ( абстрактный описатель ) - абстрактный описатель типа Т ;
- * ( абстрактный описатель ) - указатель на тип Т ;
- абстрактный описатель ( ) - функция, возвращающая значение типа Т ;
- абстрактный описатель [ n ] - массив с n элементами типа Т, n - выражение с постоянным значением;
Приведем примеры явного преобразования. Предположим, что даны следующие определения и описания:
int i;char *pc, *name; char *calloc( ), *strcpy( ); тогда можно привести следующие примеры явных преобразований типов:
(char) i - преобразует значение типа int в значение типа char.
pc=(char *) 0777 - преобразует восьмеричный литер 0777 в значение указателя на знак таким образом, что оно может быть присвоено переменной "pc".
(emp *) calloc(1,sizeof(emp)) - преобразует значение "знакового" указателя, возвращаемого функцией calloc, в значение указателя emp.
(void) strcpy(name,"gehani") - опускает значение, возвращенное функцией strcpy.