Перейти к содержанию

Основные типы данных

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

Основной арсенал похож на C++ (с некоторыми изменениями).

Целые числа

int (сокращение от "integer"). Основной и самый известный тип, целочисленный: переменные этого типа могут принимать только целые значения в диапазоне от -2'147'483'648 до 2'147'483'647.

uint (сокращение от "unsigned integer"). Беззнаковый аналог целочисленного типа, умеет работать только на множестве натуральных чисел с нулём. Диапазон — от 0 до 4'294'967'295. Стандартным типом в ZScript не является, так что на старых версиях могут быть проблемы с его объявлением в необычных местах.

Числа с плавающей точкой

Тип, представляющий вещественное (действительное) число — то есть число, имеющее целую и дробную части.

Тип double

Вещественный тип, позволяет хранить числа с дробной частью с очень хорошей точностью и повсеместно используется в движке *ZDoom.

  • Диапазон возможных значений в максимумах — от -1.7 * 10308 до 1.7 * 10308.
  • Допустимый минимум (так называемый "epsilon") — 1 * 10-308.

Тип float

Вещественный тип, по сравнению с double хранит числа с меньшей точностью. В ZScript оставлен ради обратной совместимости с некоторыми особенностями оригинального движка Doom.

  • Диапазон возможных значений в максимумах — от -3.4 * 1038 до 3.4 * 1038.
  • Допустимый минимум ("epsilon") — 1 * 10-38.
  • Обычно операции с ним работают быстрее double, однако по.

Особенности чисел с плавающей точкой

Числа с плавающей точкой в ZScript полностью придерживаются стандарта IEEE 754.

Важно понимать, что в числах с плавающей точкой точность дробной части зависит от точности целой — чем крупнее целая часть, тем меньше знаков сможет хранить дробная.

Заметка моддерам на ACS: типа "fixed" в ZScript нет, а битовые операции с double обычно ничем хорошим не заканчиваются (см. §5 по ссылке выше). Впрочем, для чисел с плавающей точкой битовые операции и не определены.

Логический тип

bool: Логический тип. Технически это целочисленное со значением либо ноль ("0" и есть), либо не-ноль (любое ненулевое число, обычно используется "1").

Есть более правильные аналоги "0"/"1" для логического типа — константы "false"/"true" ("ложь"/"истина"), соответственно (см. "Алгебра логики").