## Выражения: Типы данных и константы

Допустимые типы данных:
bool — логический (0 или 1);
int — целый (4-байта);
real — вещественный с двойной точностью;
string — строковой произвольной длины;
datetime — дата-время (число секунд, прошедших с 1 января 1970);
error — ошибка.

Приведение типов в выражениях осуществляется автоматически, но можно использовать также функции преобразования типа (см. ниже). Типы bool и datetime являются подмножествами int. При приведении числовых типов к bool положительные значения преобразуются в true, отрицательные и 0 — в false. Тип error эквивалентен строковому и содержит сообщение об ошибке.

Целочисленные константы можно задавать как в десятичной системе счисления, так и в бинарной или шестнадцатеричной, например:

`0b0100.1010` — двоичное 74
`0xFFFF` — шестнадцатеричное 65535
В двоичных и шестнадцатеричных константах точка служит для визуального отделения разрядов и при вычислениях игнорируется.

Вещественные константы задаются либо в экспоненциальной форме, либо с плавающей точкой:

    2.345e+8
    2345E-8
    20.345

Строковые константы записываются в двойных кавычках. В строковые константы можно включать символы с любыми кодами, в том числе следующие спецсимволы:
`\ddd` — символ, заданный десятичным кодом ddd;
`\xHH` — символ, заданный шестнадцатеричным кодом HH;
`\a` — символ AlertBel \x07
`\b` — символ Backspace \x08
`\t` — символ HorizontalTab \x09
`\n` — символ Newline, \x0A или \x0D\x0A
`\v` — символ VerticalTab, \x0B
`\f` — символ Formfeed, \x0C
`\r` — символ CarriageReturn, \x0D
`\\` — символ обратного слэша \
`\"` — символ двойной кавычки "

Константы даты-времени задаются как строковые с преобразованием типа. По умолчанию разделителем года, месяца и дня в датах является символ "/". Разделитель можно изменить командой Syntax:

    datetime ("2005/08/21 11:15:20").

Неинициализированные значения, которым в матрице данных соответствует пропуск или ???, имеют значение empty. Преобразование empty к числовым типам даёт 0, к строковому типу — "empty".

По умолчанию в библиотеке предопределены значения некоторых констант, которые можно использовать во всех выражениях:

    empty  = empty;
    false  = 0;
    true   = 1;
    PI     = 3.1415926535897931;
    MINUTE = 60;
    HOUR   = 60 * 60;
    DAY    = 60 * 60 * 24;
    WEEK   = 60 * 60 * 24 * 7;