Целочисленные типы

b

Целочисленные типы в Delphi: от Byte до Int64

В языке Delphi (Object Pascal) целочисленные типы — это фундамент, на котором строится большинство алгоритмов. Они используются для счётчиков, индексов, флагов, расчётов и хранения идентификаторов. В этом материале мы последовательно разберём все встроенные целочисленные типы, их характеристики, правила выбора и подводные камни. Материал ориентирован на практиков: вы увидите примеры объявления, операции, а также узнаете, как избежать переполнения.

Классификация целочисленных типов Delphi

Все целые числа в Delphi делятся на знаковые (могут хранить отрицательные значения) и беззнаковые (только ноль и положительные числа). Для каждого типа определены минимальное и максимальное значения, а также размер в байтах. Ниже приведена сводная таблица (актуальна для Delphi 2026).

Знаковые типы (со знаком)

Беззнаковые типы (только положительные)

Какой тип выбрать? Практические рекомендации

При выборе целочисленного типа руководствуйтесь тремя критериями: диапазон значений, скорость работы и объём памяти. Для большинства повседневных задач достаточно Integer. Если вы работаете с отрицательными числами — используйте знаковые типы. Для индексации массивов или коллекций предпочтительнее Integer, так как он сопоставим с разрядностью процессора (32 бита) — операции с ним выполняются максимально быстро. Для больших идентификаторов (например, ID в базе данных) берите Int64, чтобы не получить переполнения в будущем.

Примеры кода: объявление и базовые операции

Ниже приведён простой фрагмент, демонстрирующий объявление переменных разных целочисленных типов и выполнение типовых операций.

var
small: SmallInt;
intVal: Integer;
bigVal: Int64;
byteVal: Byte;
begin
small := 32000; // в пределах SmallInt
intVal := 1000000; // Integer
bigVal := intVal * 1000; // результат может превысить 2^31, поэтому используем Int64
byteVal := 255; // максимум для Byte
// Показываем результат
WriteLn('bigVal = ', bigVal); // 1 000 000 000
end.

Обратите внимание: при умножении intVal на 1000 мы присваиваем результат переменной Int64. Если бы мы попытались сохранить его обратно в Integer, произошло бы переполнение (без ошибки в Delphi, если не включена проверка переполнения).

Особенности и типовые ошибки

  1. Неявное приведение типов. При смешивании знаковых и беззнаковых типов в выражениях Delphi автоматически преобразует всё к более «старшему» типу, но при присваивании возможна потеря данных. Всегда контролируйте, чтобы значение помещалось в целевой тип.
  2. Проверка переполнения. По умолчанию в Delphi переполнение целых чисел игнорируется (результат просто «сворачивается»). Чтобы ловить такие ошибки на этапе тестирования, включите в проекте опцию {$OVERFLOWCHECKS ON} или поставьте галочку «Overflow checking» в настройках компилятора.
  3. Размер типов на разных платформах. В Delphi для Windows (32- и 64-битной версии) Integer всегда 32-битный. Однако для мобильных или кросс-платформенных проектов (FireMonkey) Integer тоже 32 бита, но LongInt может отличаться. В официальной документации на 2026 год рекомендуется для кроссплатформенности использовать фиксированные типы: Int32, Int64, UInt32 и т.д. (модуль System.Types).

Когда использовать беззнаковые типы?

Беззнаковые типы (Byte, Word, Cardinal) хороши для работы с сетевыми протоколами, хэшами, битовыми масками и там, где отрицательные значения лишены смысла. Однако будьте осторожны: любое вычисление, которое может дать отрицательный результат (например, разность векторов), должно использовать знаковые типы. Иначе вы получите тихий баг с переполнением.

Совет для новичков

Начните с типа Integer для 90% ваших задач. Когда почувствуете, что значение может выйти за границы 2 миллиардов — переходите на Int64. Для флагов состояний используйте Byte или Boolean (хотя Boolean — это не целое, но часто применяется). Постепенно, нарабатывая опыт, вы научитесь выбирать оптимальный тип для каждой конкретной ситуации. Помните: правильный выбор типа — это не про «маленькую» экономию памяти, а про корректность и предсказуемость поведения программы.

Добавлено: 27.04.2026