Целый тип | Логический | Символьный | Тип-диапазон | Перечисляемый | Массивы | Записи |
Целый тип
Диапазон возможных значений целых типов зависит от их внутреннего представления, которое может занимать один, два или четыре байта. В таблице приводятся названия целых типов, длина их внутреннего представления в байтах и диапазон возможных значений.
Название Длина, байт Диапазон значений Byte 1 От 0 до 255 Shortlnt 1 От -128 до +127 Word 2 От 0 до 65 535 Integer 3 От -32 768 до +32 767 Longlnt 4 От -2 1 47 483 648 до +2 1 47 483 647
При использовании процедур и функций с целочисленными параметрами следует руководствоваться "вложенностью" типов, т. е. везде, где может использоваться WORD, допускается использование BYTE (но не наоборот), в LONGINT "входит" INTEGER, который, в свою очередь, включает в себя SHORTINT. Перечень процедур и функций, применимых к целочисленным типам, приведен в таблице. Буквами b, s, w, i, i обозначены выражения соответственно ТИПа BYTE, SHORTINT, WORD, INTEGER И LONGINT, x — Выражение любого тз этих типов; буквы vb, vs, vw, vi, vi, vx обозначают переменные соответствующих типов. В квадратных скобках указывается необязательный параметр.
Обращение Тип результата Действие abs (x) х Возвращает модуль х chr (b) Char Возвращает символ по его коду dec (vx[i]) - Уменьшает значение vx на i, а при отсутствии i — на 1 inv (vx[i]) - Увеличивает значение vx на i, а при отсутствии i — на 1 Hi (i) Byte Возвращает старший байт аргумента Hi (w) Тоже Тоже Lo (i) - Возвращает младший байт аргумента Lo (w) - Тоже odd(l) Boolean Возвращает True, если аргумент — нечетное число Random (w) Как у параметра Возвращает псевдослучайное число, равномерно распределенное в диапазоне от 0 до (w - 1) sqr (x) х Возвращает квадрат аргумента swap (i) Integer Меняет местами байты в слове swap (w) Word To же
При действиях с целыми числами тип результата будет соответствовать типу
операндов, а если операнды относятся к различным целым типам, — типу
того операнда, который имеет максимальную мощность (максимальный диапазон значений).
Возможное переполнение результата никак не контролируется, что может привести к недоразумениям, например:
  var
      а : Integer;
      х, у : Real;
  begin
      а := 32767; {Максимально возможное значение типа INTEGER}
      х := а + 2; {Переполнение при вычислении этого выражения!)
      у := Longlnt(а)+2;{Переполнения нет после приведения переменной к более мощному типу}
      WriteLn(x:10:0, у:10:0)
  end.
В результате прогона программы получим
-32767       32769