Иллюстрированный самоучитель по Tirbo Pascal




Совместимость и преобразование типов


Как уже неоднократно отмечалось, Турбо Паскаль - это типизированный язык. Он построен на основе строгого соблюдения концепции типов, в соответствии с которой все применяемые в языке операции определены только над операндами совместимых типов. При обсуждении операций над вещественными данными мы уже затрагивали проблему совместимости вещественных и целых типов. Аналогичные проблемы возникают при операциях над строками разной длины, строками и символами и т.д. Ниже приводится более полное определение совместимости типов.

Два типа считаются совместимыми, если:

  • оба они есть один и тот же тип;
  • оба вещественные;
  • оба целые;
  • один тип есть тип-диапазон второго типа;
  • оба являются типами-диапазонами одного и того же базового типа;
  • оба являются множествами, составленными из элементов одного и того же базового типа;
  • оба являются упакованными строками (определены с предшествующим словом PACKED) одинаковой максимальной длины;
  • один тип есть тип-строка, а другой - тип-строка, упакованная строка или символ;
  • один тип есть любой указатель, а другой - нетипизированный указатель;
  • один тип есть указатель на объект, а другой - указатель на родственный ему объект;
  • оба есть процедурные типы с одинаковыми типом результата (для типа-функции), количеством параметров и типом взаимно соответствующих параметров.
  • Совместимость типов приобретает особое значение в операторах присваивания. Пусть T1 - тип переменной, а Т2 - тип выражения, т.е. выполняется присваивание T1 := T2. Это присваивание возможно в следующих случаях:

  • T1 и T2 есть один и тот же тип и этот тип не относится к файлам или массивам файлов, или записям, содержащим поля-файлы, или массивам таких записей;
  • T1 и T2 являются совместимыми порядковыми типами и значение T2 лежит в диапазоне возможных значений T1;
  • T1 и T2 являются вещественными типами и значение T2 лежит в диапазоне возможных значений T1;
  • T1 - вещественный тип и T2 - целый тип; ,
  • T1 - строка и T2 - символ;
  • T1 - строка и T2 - упакованная строка;
  • T1 и T2 - совместимые упакованные строки;



  • Содержание  Назад  Вперед