<<< BACK NEXT >>>

ОПЕРАЦИИ  CAPER

Ниже перечислены основные операции. Арифметические операции:

" - "   -    вычитание и унарный минус;
" + "   -    сложение
" * "   -    умножение
" / "   -    деление
" % "   -    деление по модулю
"**"    -    возведение в степень

Все операции  имеют традиционный смысл, ( по "%", как и в С, такое деление дает остаток от деление двух целых чисел).Операции  сравнения  и логические операции.

"<"   -  меньше
">"   - больше
">="  - больше или равно
"<="  - меньше или равно
"!="  - не равно
"=="  - равно

"&&"  - логическое  И
"||"  - логическое  ИЛИ
"!"   - логическое  НЕ

Двоичные операции

|     - ИЛИ
&     - И
>>    - двоичный сдвиг вправо
<<    - двоичный сдвиг влево

Операции присваивания

:=    - простое присваивание правого операнда левому;
+=    - присваивание  левому операнду  с предварительным суммированием левого и правого операндов;
-=    - присваивание  левому операнду  с предварительным вычитанием из левого операнда правого;
*=    - присваивание  левому операнду  с предварительным умножением левого и правого операндов;
/=    - присваивание  левому операнду  с предварительным делением левого и правого операндов;
%=    - присваивание  левому операнду  с предварительным делением по модулю    
        левого операнда на правый;
&=    - присваивание  левому операнду  с предварительным применением операции & ( И ) к левому и правому операндам;
|=    - присваивание  левому операнду  с предварительным применением операции  | ( И )  к левому и правому операндам.

   Операции адресования:

& - указание блока или указание глобальной метки по адресу в переменной.
@ - взятие адреса переменной или места.
$ - операция взятия состояния места
=* - копирование составных типов данных (массивов, структур и коллекций).

Пример:

private <int> [100] arrArr1, <int> [200] arrArr2
arrArr2 =* arrArr1

arrArr1 будет скопирован полностью в первую половину arrArr2

private < tagStru > [200] arrStru1, < tagStru > [50] arrStru2, =>
        < tagStru > stru1, < tagStru > stru2

arrStru1 =* arrStru2
stru1 =* stru2

Корректность копирования составных данных контролируется компилятором.
КОНСТАНТЫ И СТРОКОВЫЕ ЛИТЕРАЛЫ

Представление констант  CAPER  носит обычный для большинства языков характер.

Тип         Варианты

'D'    -   123.45'D ,     -0.12345e3'D ,     12345E-2'D
'F'    -   123.45 ,       -0.12345e3 ,       12345E-2
'G'    -   1234567'G ,    0'G ,              10'G
'L'    -   -1234567'L ,   0'L ,              -10'L
'W'    -   12345'W ,      0'W
'I''   -   -12345'I ,     -1'I,              10'I
'H'    -   12345'H ,      1'H ,              10'H
'J'    -   -123'J ,       -1'J ,             10'J
'B'    -   123'B ,        200'B ,            255'B
'C'    -   123'C ,        127'C ,            -127'C

   Символ   " ' "  (одинарная кавычка), следующая за цифровой частью литерала, означает наличие дескриптора типа, в котором должно быть представлено записанное число - одна из букв обозначения типа (см. выше). Числовые литералы могут быть записаны и без дескриптора типа, и тогда компилятор CAPER представляет число типом "I", если только в записи числа нет признаков, требующих плавающего представления - десятичной точки и/или знака порядка числа с плавающей точкой.
Кроме того предоставляется возможность записывать двоичные и шестнадцатеричные
константы:

двоичные -
      0b00000100  -  число  4
      0b00000011  -  число  3
      0b00000010  -  число  2
(все будут переведены в тип 'I')
      0b0000000100000011'H  -  число 300 в 2-х байтах
      0b00000011'B  -  число  3 в одном байте

и шестнадцатеричные -
      0x01'B             -  число  1 в одном байте
      0x0A'B             -  число  10 в одном байте
      0x000001F2         -  число  498 в четырех байтах (тип 'I').

Традиционно представление и символьных констант:

      'К'   - символ
      "Строковый литерал"

var1 := 0x01
var2 := 12345  (т.е. 12345'I )

<<< BACK NEXT >>>