"Денис Гаев. Ксерион: язык и технология программирования" - читать интересную книгу автора


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

!! space -- символьная константа
char const space = С С;
!! factor -- плавающая константа
float const factor = 2 * PI * PI;
!! median -- целая константа
int const median = (low + high) // 2

Наряду с константностью, важным атрибутом переменной является режим
размещения, указывающий каким именно образом переменная будет создана, и
сколько времени она просуществует. По умолчанию, режим размещения определяет
контекст описания: в зависимости от того места, где встретилось описание,
переменная может быть объявлена глобальной, локальной (в функции) или
компонентной (в классе). Однако, любая переменная или константа может быть
явно описана как статическая (static), т.е. имеющая время жизни, совпадающее
со временем выполнения программы:

u_int i, j, static counter = 0

Заметьте, что ключевое слово static -- атрибут описываемой переменной
(в данном случае, counter), а не описания в целом, как принято в C.

Для примитивных типов данных определено множество операций. Подробно
рассматривать систему операций мы не будем, так как она во многом
позаимствована из C. Отметим лишь наиболее существенные различия. Так, в
отличие от C, в Ксерионе различаются операции плавающего ('/') и
целочисленного ('//') деления (а взятие остатка от деления выполняется
операцией '-/'). Наряду с привычными для C-программиста операциями битовых
сдвигов вправо и влево ('' и ''), существуют также бинарные
операции битового вращения ('.' и '.'), и унарная операция
транспозиции ('.'). (Последнюю операцию можно описать как
"перестановку половинок": для значения типа u_tiny она меняет местами
старшие и младшие 4 бита, для u_short - старшие и младшие 8 битов и т.д.)
Разумеется, предусмотрены привычные для C-программиста операции инкремента
('++') и декремента ('-- ') в префиксной и постфиксной форме.

Все операции сравнения возвращают значение типа bool. Для всех типов
определены операции сравнения на равенство ('--') и неравенство
(''), а для многих типов данных определены также сравнения на
упорядоченность ('', '=', '', '='). В частности, все
примитивные типы являются упорядоченными. (Для числовых типов это
самоочевидно, символьные типы упорядочены в соответствии с внутренней
кодировкой, а для логических значений принято false true). Кроме того,
для всех примитивных типов определены бинарные операции "максимум" ('?')
и "минимум" ('?'), возвращающие, соответственно, больший и меньший из