История изменений
Исправление hateyoufeel, (текущая версия) :
нормальный вариант - отлавливать такие ошибки в компилтайме - но не понятно, как
Да вполне понятно как. Я видел подобные проверки на жидком хацкелле и FramaC.
http://blog.frama-c.com/index.php?post/2012/02/10/Overflow-checking
Вот даже целый пост по теме.
Алсо, если не хочется возни с SMT-солверами и прочим матаном, можно просто сделать, чтобы сложение и умножение выдавали результат большего типа. Например, int64*int64 -> int128 и т.п.
Исходная версия hateyoufeel, :
нормальный вариант - отлавливать такие ошибки в компилтайме - но не понятно, как
Да вполне понятно как. Я видел подобные проверки на жидком хацкелле и FramaC.
http://blog.frama-c.com/index.php?post/2012/02/10/Overflow-checking
Вот даже целый пост по теме.