сорри отправил раньше времени ... :(
Перефразирую вопрос (FB2 RC2) :
можно ли утверждать что все целочисленные
типы в FB храняться как signed и следовательно
обрабатываются также ?
т.е. например в SP
declare variable i integer; // 32 bit
declare variable s smallint; // 16 bit
begin
i = 1;
s = -65535; // прокатывает хотя для bigint - нет (-65535..0)
s = 65535; // прокатывает хотя для bigint - нет (0..65535)
s = s + 1; // здесь должно быть переполнение, что и происходит
// пропускаем на следующих шагах
i = i + s; // а вот здесь ошибка переполнения вообще непонятна
i = i + 65535; // хотя это работает
Из всего выше перечисленного очень интерестная логика получается ...
А точнее вообще не понятно нифига ...
Особенно поведение последнего случая, насколько я "врубаюсь"
суммируемые значения должны быть расширенны до размера принимающей
переменной, а в данном случае происходит всё в точности наоборот :(
Да и остаётся вопрос как будет храниться если записать значение
переменной s (65535) в поле SmallInt какой нить таблички ... ?
PS: Все эксперементы воспроизводились с использованием
отладчика IBExpert пошагово ...
С уважением,
Константин Григорьевич.
===============
Если "низя", но очень "хотса" - то "мона" :)
--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---