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

Выражения могут быть преобразованы из одного типа в другой явным указанием. Выражение 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.

Синтаксис типов

Можно отметить, что синтаксис типов в языке Си нерегулярен и беспорядочен, о чем свидетельствуют:

  1. Трудность создания форматеров.
  2. Большое число ошибок, допускаемых даже опытными программистами.
  3. Трудность создания синтаксических анализаторов для трансляторов с языка Си - не существует двух трансляторов с языка Си, синтаксис входного языка для которых полностью совпадал бы.
  4. Имеется три случая, когда необходимо использовать типы:
    • описания, связывающие тип с именем, как например, в случае описания (глобальных) переменных и формальных параметров;
    • описания, связывающие значения (и тип) с именем, как, например, описания программ;
    • приведения, обеспечивающие, например, возможность трактовки символов как целых.

Лекция 6. Функции и переключение ввода-вывода

Ввод и вывод одного символа. Буферы. Чтение одной строки. Чтение файла. Переключение и работа с файлами.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: