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

Операции

При действиях с вещественным типом одним из операндов может быть значение любого целого типа. Результат операций имеет указанный в таблице тип EXTENDED только для установленного в среде Турбо Паскаля режима генерации кода, рассчитанного на арифметический сопроцессор или на его эмуляцию (см. прил.1). Если этот режим не установлен, результат будет иметь значение типа REAL.

Унарная операция @ применяется к операнду любого типа и возвращает результат типа POINTER (см. гл.6), в котором содержится адрес операнда. Пусть, например, задано описание:

type
TwoChar = array [1..2] of char; var
Int: integer; TwoCharPtr: ATwoChar;

Тогда оператор:

TwoCharPtr: = @Int;

Приведет к тому, что в TwoCharPtr будет храниться адрес целочисленной переменной INT, которая может теперь интерпретироваться как совокупность двух символов. Поэтому возможен, например, такой оператор:

if TwoCharPtr^[1] = 'С' then…

Если операция @ применяется к процедуре, функции или методу в объекте, ее результатом будет адрес точки входа в эту процедуру (функцию, метод). Этот адрес можно использовать только в подпрограмме, написанной на ассемблере, или в фрагментах INLINE.

В Турбо Паскале определены следующие логические операции:

  • not – логическое НЕ;
  • and – логическое И;
  • or – логическое ИЛИ;
  • хоr – исключительное ИЛИ.

Логические операции применимы к операндам целого и логического типов. Если операнды – целые числа, то результат логической операции есть тоже целое число, биты которого (двоичные разряды) формируются из битов операндов по правилам, указанным в табл. 3.2.

Таблица 3.2. Логические операции над данными типа INTEGER (поразрядно).

Операнд 1 Операнд 2 not and or xor
1   0      
0   1      
0 0   0 0 0
0 1   0 1 1
1 0   0 1 1
1 1   1 1 0

К логическим же в Турбо Паскале обычно относятся и две сдвиговые операции над целыми числами:

  • i shl j – сдвиг содержимого i на j разрядов влево; освободившиеся младшие разряды заполняются нулями;
  • i shr j – сдвиг содержимого i на j разрядов вправо; освободившиеся старшие разряды заполняются нулями.

В этих операциях i и j – выражения любого целого типа.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.