Преобразование типов

Преобразование типов происходит всякий раз, когда вы присваиваете переменную одного типа переменной другого типа.

Преобразования без потерь

Так бывает, когда значение одной беззнаковой или знаковой переменной присваивается другой переменной, которая может хранить это значение без изменений.

Пример преобразования без потерь:

dim i as word=50
dim x as char=i

X «меньше», чем i: это всего один байт против двух байт у i. Кроме того, x - знаковая переменная, поэтому может хранить только положительные значения до 127.

К счастью, значение i (50) укладывается в этот диапазон, так что преобразование не приведёт к потере данных.

Преобразования с потерями

Теперь рассмотрим другой пример:

unsigned int i=0x5AA5;
unsigned char x=i; //The result is 0xA5 

Здесь x получит значение младшего байта i (0xA5). Старший байт i будет потерян.

Примечание

TIDE и TiOS стараются не донимать вас бесконечными предупреждениями о (возможной) потере данных. По мнению Tibbo, некоторые современные языки заходят слишком далеко, пытаясь водить пользователя за руку. В результате вы получаете головокружительный поток предупреждений, которые только отвлекают. Знать, что помещение 16-разрядного значения в 8-разрядную переменную может привести к потере данных, - ваша задача.

Преобразования, меняющие интерпретацию

Так бывает, когда принимающая переменная получает то же двоичное значение, что и исходная, но интерпретирует его иначе:

dim i as byte=254
dim x as char=i 'The result is –2

В этом примере x получает то же двоичное значение, но поскольку x - знаковая переменная, у этого значения другой смысл. 254 превращается в -2.

Преобразования с округлением числа (отбрасыванием дробной части)

При преобразовании переменной типа float (real) в любой другой числовой тип дробная часть отбрасывается, поскольку только real может хранить дробные числа.

Об этом предупреждения выдаются.

Исходный материал Tibbo обновлён 11 июля 2022Оригинал на docs.tibbo.com · Сообщить об ошибке