Перестала работать запись с переполнением в переменную типа Word

Очень простой пример работающий на Delphi 10.1 (Berlin) и не работающий на более старших версиях

var
  a, b, c: Word;
begin
  a := 297;
  b := 57762;
  c := a * b;
end;

в версии 10.1 значение переменной с = 23688 а в более старший out of range т.е. значение переменных a,b,c являются не word а integer


Ответы (1 шт):

Автор решения: Vlad Chapl

Очень похоже на то, что компилировались с разными настройками. https://www.gunsmoker.ru/2009/04/delphi_19.html ищи слова «Overflow checking»

В вашем примере идет переполнение и то, что вы сделали сейчас это игнорирование этого переполнения. Результат операции некорректный (хотя при генерации псевдослучайных чисел, шифровании или хэшировании такое практикуется).

→ Ссылка