Конференция "Основная" » Int64 и Integer Overflow [D5]
 
  • KSergey © (16.04.08 18:10) [0]
    Столкнулся с неприятной проблемой: дельфи не выкидывает Integer Overflow при операциях с Int64. Тупо-глупо отрезает что влезло - и все, не ломается.
    С опциями проекта все нормальненько, на Integer - при переполнении ломается как и надо, на Int64 не хочет. Мне это сильно требуется.

    Отсюда вопрос: это лечится как-нибудь? Что-то ничего полезного не нашел в гугле... Справка про переполнение упоминает только int16/int32. Про Int64 - молчек.
  • Сергей М, (16.04.08 18:16) [1]

    > это лечится как-нибудь?


    лечится.

    Просто не пихай туда то что туда заведомо не лезет.
  • KSergey © (16.04.08 18:22) [2]
    > Сергей М,   (16.04.08 18:16) [1]
    > Просто не пихай туда то что туда заведомо не лезет.

    Так оно ж в результате вычислений может случиться.... а я и не узнаю, обидно.
  • Reindeer Moss Eater © (16.04.08 18:29) [3]
    myint64 and $00000000FFFFFFFF;
  • tesseract © (16.04.08 18:31) [4]

    > Так оно ж в результате вычислений может случиться.


    Сравнивай с $FF FF FF FF FF FF FF FF, узнаешь.

    ЗЫ: Федеральный долг США считаешь ?
  • tesseract © (16.04.08 18:32) [5]

    > Сравнивай с $FF FF FF FF FF FF FF FF, узнаешь.


    ТПРУ это  для unsigned.
  • Сергей М, (16.04.08 18:35) [6]

    > оно ж в результате вычислений может случиться.... а я и
    > не узнаю, обидно


    А ты компилятор попроси)

    В ряде случаев он сможет помочь твоей беде исключением)
  • MBo © (16.04.08 18:38) [7]
    в BDS2006 то же самое
  • Anatoly Podgoretsky © (16.04.08 19:50) [8]
    > tesseract  (16.04.2008 18:32:05)  [5]

    Зачем своя константа, MaxInt
  • oxffff © (16.04.08 20:16) [9]

    > KSergey ©   (16.04.08 18:10


    Delphi 7. +Overflow Checking.

    var a:int64;
    begin
    a:=$7FFFFFFFFFFFFFFF;
    a:=a+1;  //       <-Исключение здесь

    Что я не так делаю? :)
  • oxffff © (16.04.08 20:17) [10]

    > Отсюда вопрос: это лечится как-нибудь?


    Лечится как обычно проверкой битика регистра флагов.
  • oxffff © (16.04.08 20:28) [11]
    Либо проще

    -Overflow Checking(Disabled).

    var a:int64;
    begin
    a:=$8000000000000000;
    a:=a-1;
    asm
    into;
    end;
 
Конференция "Основная" » Int64 и Integer Overflow [D5]
Есть новые Нет новых   [134487   +1][b:0][p:0]