2.1.2 Переполнение

Ссылка на manual

Ссылка на код демонстрации

По причинам производительности компилятор Haxe не осуществляет переполнения. Задача проверки на переполнения лежит на конечной платформе. Вот несколько примеров поведения при переполнении на разных платформах:

  • С++, Java, C#, Neko, Flash: 32-битное целое число со знаком с обычным поведением при переполнении
  • PHP, JS, Flash 8: нет типа int, потеря точности случится в случае достижения лимита float($2^{52}$)

В качестве альтернативы можно использовать классы Int32 и Int64 для уверенности, что будет правильное поведение при переполнении независимо от платформы, но ценой дополнительных вычислений в зависимости от платформы.

Пример поведения при переполнении продемонстрирован в коде ниже. Переменная i, выходя за пределы Int, приобретает отрицательное значение, а затем при декременте на единицу — крайнее положительное значение

Заметка: данный код следует выполнять в среде HaxeDevelop, так как на Try Haxe! он (код) приобретает другое поведение