Код |
Обозначение |
Вычисляемое выражение |
Тип результата |
Пояснение |
1 |
CEqual |
A=B |
Logic |
Полное совпадение. |
2 |
CIn |
A And B = A |
Logic |
A содержится в В. |
3 |
CInclude |
A And B = B |
Logic |
А содержит В. |
4 |
CExclude |
A And B = 0 |
Logic |
A и В взаимоисключающие. |
5 |
CIntersect |
A And B <> 0 |
Logic А и В пересекаются. |
6 |
COr |
A Or B |
Сolor |
Побитное включающее или. |
7 |
CAnd |
A And B |
Color |
Побитное и. |
8 |
CXor |
A Xor B |
Color |
Побитное исключающее или |
9 |
CNot |
Not A |
Color |
Побитное отрицание |
В табл. 3 приведены операции с переменными типа Color. Первые пять операций могут использоваться только для сравнения переменных типа Color, а остальные четыре операции — для вычисления выражений типа Color.
В ряде запросов необходимо указать тип операции над цветом. Для передачи таких параметров используется переменная типа Integer. В качестве значений передается содержимое соответствующей ячейки столбца код табл. 3.
Приведение и преобразование типов
Есть два пути использовать переменную одного типа как переменную другого типа. Первый путь состоит в преобразовании значения к заданному типу. Так, для преобразования целочисленной переменной к действительному типу, достаточно просто присвоить переменной действительного типа целочисленное значение. С обратным преобразованием сложнее, поскольку не ясно что делать с дробной частью. В табл. 4 приведены все типы, которые можно преобразовать присваиванием переменной другого типа. В табл. 5 приведены все функции преобразования типов.
Таблица 4. Преобразование типов прямым присваиванием переменной значения выражения
Тип переменной |
Тип выражения |
Пояснение |
Real |
Real, Integer, Long |
Значение преобразуется к плавающему виду. При преобразовании значения выражения типа Long возможна потеря точности. |
Long |
Integer, Long |
При преобразовании типа Integer, действуют следующие правила. Значение переменной помещается в два младших байта. Если значение выражения больше либо равно нолю, то старшие байты равны H0000, в противном случае старшие байты равны HFFFF. |
Integer |
Integer, Long |
При преобразовании выражения типа Long значение двух старших байт отбрасывается. |
Таблица 5. Функции преобразования типов
Имя функции |
Тип аргумента |
Тип результата |
Описание |
Real |
Real, Integer, Long |
Real |
Аналогично прямому присваиванию |
Integer |
Integer, Long |
Integer |
Аналогично прямому присваиванию |
Long |
Integer, Long |
Long |
Аналогично прямому присваиванию |
Str |
Real, Long, Integer |
String |
Представляет числовой аргумент в виде символьной строки в десятичном виде |
Round |
Real |
Long |
Округляет действительное значение до ближайшего длинного целого. Если значение действительного выражения выходит за диапазон длинного целого, то результат равен нулю. |
Truncate |
Real |
Long |
Преобразует действительное значение в длинное целое путем отбрасывания дробной части. Если значение действительного выражения выходит за диапазон длинного целого, то результат равен нулю. |
LVal |
String |
Long |
Преобразует длинное целое из символьного представления во внутреннее. |
RVal |
String |
Real |
Преобразует действительное число из символьного представления во внутреннее. |
StrColor |
Color |
String |
Преобразует внутреннее представление переменной типа Color в соответствии с разд. «Значение переменной типа цвет» |
ValColor |
String |
Color |
Преобразует символьное представление переменной типа Color во внутреннее. |
Color |
Integer |
Color |
Интерпретирует целое число как значение типа Color. |
При вычислении числовых выражений действуют следующие правила преобразования типов:
1. Выражения вычисляются слева на право.
2. Если два операнда имеют один тип, то результат имеет тот же тип.
3. Если аргументы имеют разные типы, то выражение имеет старший из двух типов. Список числовых типов по убыванию старшинства: Real, Long, Integer.
4. Результат операции деления действительных чисел (операция «/») всегда имеет тип Real, вне зависимости от типов аргументов.
В отличие от преобразования типов приведение типов позволяет по-разному интерпретировать одну область памяти. Функция приведения типа применима только к переменным или элементам массива (преобразование типов применимо и к выражениям). Рекомендуется использовать приведение типов только для типов, имеющих одинаковую длину. Например, Integer и Color или Real и Long. Список функций приведения типов приведен в табл. 6.
Читать дальше