Явные преобразования

В языке Cони выполняются конструкцией вида:

(<имя-типа>)<выражение>

Пример.

sqrt((double)n)

Следует заметить, что применение оператора приведения типа, как его принято называть, ограничено, поскольку автоматические преобразования в подавляющем большинстве случаев дают тот же результат.

В языке Basic явные преобразования выполняются с помощью группы встроенных функций.

CBool(<выражение>) à boolean

CByte(<выражение>) à byte

CСur(<выражение>) à currency

CDate(<выражение>) à date

CDbl(<выражение>) à double

CInt(<выражение>) à integer

CLng(<выражение>) à long

CSng(<выражение>) à single

CStr(<выражение>) à string

CVar(<выражение>) à variant

Необходимо отметить особенности некоторых видов явных преобразований. Преобразование вида float | double à intв языке C приводит к отбрасыванию дробной части.

Пример.

int k, m;

float s;

s=3.78;

k=s; à k=3

m=-s; à s=-3

В языке Basic аналогичное преобразование вызывает округление.

Пример.

dim k as integer, m as integer, s as single

s=3.78

k=s à k=4

m=s-0.5 à k=3

Преобразование вида intà unsigned в языке Cдля отрицательных чисел приводит к следующему эффекту.

Пример.

int k;

unsignedm;

k=-1;

m=k; à m=65535

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

Пример.

dim k as long, s as single, m as integer

k=123456789

s=k à s=1.234568e+8

m=k à Ошибка!