OberonCore https://forum.oberoncore.ru/ |
|
Деление на ноль и бесконечность https://forum.oberoncore.ru/viewtopic.php?f=29&t=2725 |
Страница 1 из 1 |
Автор: | Роман М. [ Среда, 30 Июнь, 2010 14:31 ] |
Заголовок сообщения: | Деление на ноль и бесконечность |
Случайно наткнулся на одну статью ("Безвременно как бесконечность") и попробовал такой код: Код: MODULE TestZeroDiv; IMPORT Log := StdLog; PROCEDURE RealDiv*; VAR f, zero: REAL; BEGIN zero := 0.0; f := 123.0 / zero; Log.Real(f) END RealDiv; PROCEDURE IntDiv*; VAR i, zero: INTEGER; BEGIN zero := 0; i := 123 DIV zero; Log.Int(i) END IntDiv; PROCEDURE Do*; BEGIN RealDiv; IntDiv END Do; END TestZeroDiv. TestZeroDiv.Do Компилятор ББ сообщает уже на этапе компиляции о попытке деления на ноль, если указывать ноль константой. При делении вещественных чисел на ноль получаем бесконечность (Inf), как и описано в стандарте IEEE (IEEE 754-1985). А при целочисленном делении на ноль срабатывает капкан. Надеюсь, будет полезно всем. |
Автор: | Евгений Темиргалеев [ Среда, 30 Июнь, 2010 14:38 ] |
Заголовок сообщения: | Re: Деление на ноль и бесконечность |
Language Report писал(а): 8.2.2 Arithmetic operators
... If the result of a real operation is too large to be represented as a real number, it is changed to the predeclared value INF with the same sign as the original result. Note that this also applies to 1.0/0.0, but not to 0.0/0.0 which has no defined result at all and leads to a run-time error... |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |