Учебное пособие по курсу «Нейроинформатика» - страница 102

Шрифт
Интервал

стр.

В отличие от преобразования типов приведение типов позволяет по-разному интерпретировать одну область памяти. Функция приведения типа применима только к переменным или элементам массива (преобразование типов применимо и к выражениям). Рекомендуется использовать приведение типов только для типов, имеющих одинаковую длину. Например, Integer и Color или Real и Long. Список функций приведения типов приведен в табл. 6.


Таблица 6. Функции приведения типов

НазваниеТип результатаОписание
TrealRealЧетыре байта, адресуемые приводимой переменной, интерпретируются как действительное число.
TintegerIntegerДва байта, адресуемые приводимой переменной, интерпретируются как целое число.
TlongLongЧетыре байта, адресуемые приводимой переменной, интерпретируются как длинное целое.
TrealArrayRealArrayОбласть памяти, адресуемая приводимой переменной, интерпретируются как массив действительных чисел.
TPRealArrayPRealArrayЧетыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив действительных чисел.
TintegerArrayIntegerArrayОбласть памяти, адресуемая приводимой переменной, интерпретируются как массив целых чисел.
TPIntegerArrayPIntegerArrayЧетыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив целых чисел.
TlongArrayLongArrayОбласть памяти, адресуемая приводимой переменной, интерпретируются как массив длинных целых.
TPLongArrayPLongArrayЧетыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив длинных целых.
TlogicLogicАдресуемый приводимой переменной байт интерпретируются как логическая переменная.
TlogicArrayLogicArrayОбласть памяти, адресуемая приводимой переменной, интерпретируются как массив логических переменных.
TPLogicArrayLogicArrayЧетыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив логических переменных.
TColorColorДва байта, адресуемые приводимой переменной, интерпретируются как переменная типа цвет.
TFuncTypeFuncTypeЧетыре байта, адресуемые приводимой переменной, интерпретируются как адрес функции.
TPointerPointerЧетыре байта, адресуемые приводимой переменной, интерпретируются как адрес.
TstringString256 байт области памяти, адресуемой приводимой переменной, интерпретируются как строка символов.
TPStringPStringЧетыре байта, адресуемые приводимой переменной, интерпретируются как указатель на строку символов.
TvisualVisualЧетыре байта, адресуемые приводимой переменной, интерпретируются как отображаемый элемент.

Следующие примеры иллюстрируют использование преобразования и приведения типов:

При вычислении следующих четырех выражений, получаются различные результаты

>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 байта, то есть шесть элементов массива) вообще не зависят от приведенного фрагмента программы и содержат «мусор», который там находился ранее.


стр.

Похожие книги