|
Преобразует длинное целое из символьного представления во внутреннее. |
||
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. Список функций приведения типов приведен в табл. 4.
Таблица 4
Функции приведения типов
Название
Тип
результата
Описание
TReal
Real
Четыре байта, адресуемые приводимой переменной, интерпретируются как действительное число.
Tinteger
Integer
Два байта, адресуемые приводимой переменной, интерпретируются как целое число.
TLong
Long
Четыре байта, адресуемые приводимой переменной, интерпретируются как длинное целое.
TRealArray
RealArray
Область памяти, адресуемая приводимой переменной, интерпретируются как массив действительных чисел.
TPRealArray
PRealArray
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив действительных чисел.
Таблица 4
Функции приведения типов (Продолжение)
Название
Тип
результата
Описание
TIntegerArray
IntegerArray
Область памяти, адресуемая приводимой переменной, интерпретируются как массив целых чисел.
TPIntegerArray
PIntegerArray
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив целых чисел.
TLongArray
LongArray
Область памяти, адресуемая приводимой переменной, интерпретируются как массив длинных целых.
TPLongArray
PLongArray
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив длинных целых.
TLogic
Logic
Адресуемый приводимой переменной байт интерпретируются как логическая переменная.
TLogicArray
LogicArray
Область памяти, адресуемая приводимой переменной, интерпретируются как массив логических переменных.
TPLogicArray
LogicArray
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив логических переменных.
TColor
Color
Два байта, адресуемые приводимой переменной, интерпретируются как переменная типа цвет.
TFuncType
FuncType
Четыре байта, адресуемые приводимой переменной, интерпретируются как адрес функции.
TPointer
Pointer
Четыре байта, адресуемые приводимой переменной, интерпретируются как адрес.
Таблица 4
Функции приведения типов (Продолжение)
Название
Тип
результата
Описание
TString
String
256 байт области памяти, адресуемой приводимой переменной, интерпретируются как строка символов.
TPString
PString
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на строку символов.
TVisual
Visual
Четыре байта, адресуемые приводимой переменной, интерпретируются как отображаемый элемент.
Следующие примеры иллюстрируют использование преобразования и приведения типов:
При вычислении следующих четырех выражений, получаются различные результаты
4096 * 4096 = 0
Поскольку константа 4096 имеет тип Integer, а 4096 * 4096 = 16777216 = 256 * 65536 , то есть младшие два байта результата равны нулю.
Long(4096 * 4096) = 0
Поскольку оба сомножителя имеет тип Integer, то и выражение имеет тип Integer. Следовательно, результат умножения равен нулю, который затем преобразуется к типу Long.
Long(4096) * 4096 = 16777216
Поскольку первый сомножитель имеет тип длинное целое, то и выражение имеет тип длинное целое.
4096.0 * 4096 = 1.677722E+7
Поскольку первый сомножитель имеет тип Real, то и выражение имеет тип Real. Из-за недостатка точности произошла потеря седьмого знака.
В следующем примере, используя приведение типов, в массив действительных чисел A размером в 66 элементов складываются: действительное число в первый элемент массива; длинное целое во второй элемент массива и символьную строку в элементы с 3 по 66.
A[1] = 1.677722E+7
TLong(A[2]) = 16777216
TString(A[3]) = ‘Пример приведения типов’
Необходимо отметить, что элементы массива A, начиная со второго, после выполнения приведенного выше фрагмента программы не рекомендуется использовать как действительные числа, поскольку элемент A[2] содержит значение 2.350988Е-38, а элемент A[5] – значение -4.577438Е-18. Значение элементов, начиная с A[8] (символьная строка ‘Пример приведения типов’ содержит 23 символа и занимает 24 байта, то есть шесть элементов массива) вообще не зависят от приведенного фрагмента программы и содержат «мусор», который там находился ранее.
В списке типов определены только одномерные массивы. Однако, при необходимости, возможно использование двумерных массивов. Для этого в одномерный массив A необходимо поместить указатели на одномерные массивы. При этом I,J-й элемент двумерного массива записывается в виде:
TPRealArray(A[I])^[J]
В этом примере использована функция приведения типов TPRealArray, указывающая, что I-й элемент массива A нужно интерпретировать как указатель на одномерный массив действительных чисел, и операция «^» указывающая, что вместо указателя на массив TPRealArray(A[I]) используется массив, на который он указывает.
Таким образом, использование функций приведения типов позволяет из одномерных массивов строить структуры произвольной сложности. В языках программирования, таких как C и Паскаль, существует возможность строить пользовательские типы данных. При разработке стандарта эти возможности были исключены, поскольку использование пользовательских типов, облегчая написание программ, сильно затрудняет разработку компилятора или интерпретатора, а при использовании этого языка для описания компонентов нейрокомпьютера необходимость в пользовательских типах данных возникает чрезвычайно редко. Например, при описании примеров всех компонентов, приведенных в данной работе, такая необходимость ни разу не возникла.
4.3.6. Операции
В данном разделе приведены все операции, которые могут быть использованы при построении выражений различного типа. В табл. 5 приведены операции, которые допустимы в целочисленных выражениях (выражениях типа Integer или Long). В табл. 6 – список, дополняющий список операций из табл. 5 до полного списка операций, допустимых в выражениях действительного типа. В табл. 7 – операции, допустимые при построении логических выражений. В табл. 8 –для выражений типа символьная строка. В главе 1 в табл. 3 – для выражений типа Color. Если операндом может быть любой числовой тип, то вместо перечисления всех числовых типов (Integer, Real, Long) указывается слово «числовой»
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76
При использовании материалов активная ссылка на источник обязательна.