Совместимость в операциях присваивания


Совместимость по присваиванию необходима, если имеет место присваивание значения, например, в операторе присваивания или при передаче значений параметров.

Значение типа Т2 является совместимым по присваиванию с типом Т1 (т.е. допустимо Т1:=Т2),если выполняется одно из следующих условий:


  • Т1 и Т2 имеют тождественные типы, и ни один из них не является файловым типом или структурным типом, содержащим компоненту с файловым типом на одном из своих уровней.

  • Т1 и Т2 являются совместимыми порядковыми типами и значения типа Т2 попадают в диапазон возможных значений Т1.

  • Т1 и Т2 являются вещественными типами и значения типа Т2 попадают в диапазон возможных значений Т1.

  • Т1 является вещественным типом, а Т2 является целочисленным типом.

  • Т1 и Т2 являются строковыми типами.

  • Т1 является строковым типом, а Т2 является типом Char.

  • Т1 и Т2 являются совместимыми типами множеств, и все значения типа Т2 попадают в диапазон возможных значений Т1.

  • Т1 и Т2 являются совместимыми типами указателей.


На этапе компиляции и выполнения выдается сообщение об ошибке, если совместимость по присваиванию необходима, а ни одно из условий предыдущего списка не выполнено.

^

Приведение типа


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

^ Некоторые примеры приведения типа значений:

Integer('A')

Char(48)

Boolean(0)

Color(2)

Longint(@Buffer)

BytePtr(Ptr($40, $49))


Примеры вычисления выражений и приведения типов:

var x: boolean;

y: word;

z: byte;

begin

z:=3; (* 3*)

y:=$FFF3; (*65523*)

{x:=z; ошибка, недопустимый тип операнда!}

x:=boolean(y); (* TRUE, явное приведение типа *)

z:=y; (* 234, неявное приведение типа.

вызовет ошибку при выполнении из-за переполнения,

если не отключить контроль границ *)

y:= y shr z; (* 0*)

x:= y>z; (*FALSE*)

x:= z shl 2 + y>0 and z shr 2 - 3; (* FALSE,

хотя выражение в окне Watch - TRUE! *)

end.



2.6. Операторы ввода/вывода.

ТП содержит четыре оператора ввода/вывода: read, readln, write, writeln.
Оператор read осуществляет ввод данных с клавиатуры и размещение их в стандартном файле ввода input. Вводимые данные размещаются в качестве значений переменных, имена которых перечислены в круглых скобках за оператором read.
read (a, b, c);
Вводятся данные тоже списком, в котором они разделяются пробелом. Ввод заканчивается нажатием Enter. Курсор, отмечающий позицию следующего ввода/вывода остается за последним введенным данным.
Оператор readln выполняет аналогичные действия и переводит курсор на следующую строку.
Оператор write осуществляет вывод на экран или печатающее устройство с одновременным размещением в стандартном файле вывода output. Оператор может выводить сообщение или значение переменной. Сообщения записываются в апострофах. Для вывода значения переменной указывается имя переменной. Сообщения и переменные можно чередовать в одном списке, разделяя их запятыми. Курсор остается за последним выведенным данным.
Оператор writeln выполняет аналогичные действия и переводит курсор на следующую строку.
Операторы write и writeln допускают т.н. форматированный вывод данных.
write (a:5:2);
Первое из чисел указывает сколько экранных знаков отводится под вывод. Второе число указывает количество знаков после запятой в числе и может отсутствовать.



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



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