сорри отправил раньше времени ... :(

  Перефразирую вопрос (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 пошагово ...

С уважением,
Константин Григорьевич.
===============
Если "низя", но очень "хотса" - то "мона" :)



--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---

Ответить