Неявное приведение типов

  • docx
  • 11.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-00359.docx

Pascal ABC Язык Pascal ABC

Неявное приведение типов

В операторе присваивания тип переменной в левой части может не совпадать с типом выражения в правой части. Аналогично тип формального параметра, передаваемого по значению, может не совпадать с типом фактического. В этом случае, если возможно, происходит неявное преобразование (приведение) типов.

Типы byte, word и integer неявно преобразуются друг к другу, а также к типам real и complex.

Тип real неявно преобразуется к типу complex.

Интервальный тип и его базовый тип неявно преобразуется друг к другу, неявно преобразуются между собой также интервальные типы, построенные на основе одного базового типа.

Символ неявно преобразуется в строку. Строки разной длины неявно преобразуются друг к другу.

Указатель на любой тип неявно преобразуется к указателю pointer.

Производный класс неявно преобразуется к базовому.

Множество неявно преобразуется к другому множеству, если его базовый тип неявно преобразуется к базовому типу этого другого множества.

Имя процедуры или функции неявно преобразуется к указателю на процедуру или функцию с параметрами тех же типов (у функции должен также совпадать тип возвращаемого значения).

Все возможные неявные преобразования типов проиллюстрированы в программе ImplicitCast.pas.

В процессе выполнения программы после неявного преобразования числовых типов может произойти переполнение. Например, это возможно при преобразовании типа integer в тип byte. Однако, если s1 и s2 - строки и при присваивании s1:=s2 данные строки s2 не умещаются в строку s1, то остаток строки усекается без возникновения ошибки.

Операнды в выражениях также могут иметь разные типы. В этом случае обычно меньший тип неявно приводится к большему или оба типа приводятся к большему. Например, если r имеет тип real, а i - тип integer, то в выражении r+i значение i вначале приводится к типу real, после чего выполняется операция сложения над двумя вещественными значениями. Если строка s1 имеет тип string[30], а s2 - тип string[40], то в выражении s1+s2 обе строки приводятся к типу string и только потом выполняется операция сложения.

Выражения "меньший тип" и "больший тип" в предыдущем абзаце используются в смысле диапазона значений. Например, тип set of 1..9 меньше типа set of byte, но ни один из типов set of 1..9 и set of 5..15 не меньше другого.


 

Скачано с www.znanio.ru