Приведение числовых типов в выражения.
Когда два различных типа данных используются в бинарной операции, как +
(сложение) или = (присваивание), меньший тип данных автоматически
переводится в более длинный тип данных, независимо от порядка, в котором
аргументы даны.
Действия могут быть следующие:
- когда два аргумента, такие как byte, ubyte, short, ushort, или integer:
меньший аргумент приводится к более большему аргументу.
- когда один аргумент имеет тип longint или ulongint, а второй аргумент имеет
тип integer , меньший аргумент приводится к более большему аргументу.
- когда один из аргументов single или double, оба аргумента преобразуются в double
Все unsigned integer типы обрабатываются как signed integer типы при
приведениях, с расширением знака.
Преобразование числовых типов данных
Преобразование типов будет происходить неявно, когда выражение или
содержимое переменной присваивается, передается в качестве параметра в
процедуру, или возвращается в виде результата из процедуры. Преобразования
могут также быть явными при использовании CAST или одной из встроенных
функций преобразования.
Integer в Integer, любые комбинации со знаковыми или беззнаковыми
- Любой тип целого числа к меньшему типу целого числа: сохраняются
наименее значимые биты
- Любое целое число типа к большему типу целого числа: знак расширяется ,
заполняя старшие биты
Integer в Single или Double
- Возможная потеря точности
Double в Single
- Возможная потеря точности
- Если значение Double превышает диапазон Single,
то результат +/- INF
Double или Single в Integer
- Возможная потеря точности
- Если значение числа с плавающей точкой превышает диапазон целевой типа, то
результат будет неопределенным. Ошибка во время выполнения не фиксируется.
См. также