- 1
if (abs(i-i1)<1) or (abs(j-j1)<0) then continue;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−41
if (abs(i-i1)<1) or (abs(j-j1)<0) then continue;
Модуль меньше нуля.
У паскаля вроде как контроль переполнений был?
При каких случаях? Почему?
http://ideone.com/yHfCaR
Почему бы и нет? И при касте в меньший тип - тоже. Всё-таки жаба не сишка, могли себе такую проверку позволить...
Ну вот в шарпе грамотно сделали - кидают исключение, если что-то не влезает. Байтоёбов и пирфомансодрочеров это, конечно, немного расстраивает. Но зато остальным можно спокойно спать...
НЕМНОГО?
Не нравится байтоёбство (а именно с ним рано или поздно придётся иметь дело в типе int), не нужен пирфоманс? - бери BigInteger и вперёд.
В прямом коде есть положительный ноль
1000 0000 0000 0000
>Исключение при присваивании unsigned к signed? Те же грабли.
Возможно даже хуже.
Note that if the argument is equal to the value of Integer.MIN_VALUE, the most negative representable int value, the result is that same value, which is negative.
Ничего сложного и магического в асме нету. Команды, регистры и ячейки памяти понять намного проще, чем все эти ваши замыкания, ООП и MVC. Просто набор инструкций у x86 сильно разжирел за последнее время и тащит за собой хвост legacy говна с 80х годов...
+
И главное
в асме всё просто и понятно, строгая типизация, данные никуда не теряются:
mul i32,i32 => i64
add сохраняет верхний бит в специальный thread-local.
Что практически в любом яву сделать без костылей нельзя.
Вот почему в жабах/с++/с# не сделать системный thread-local, хранящий of, cf и прочие радости, которые есть на всех машинах.
Thread.currentThread().getFlags() & OVERFLOW //блять, неужели так трудно:?
К слову в жабе есть interrupt flag, лол. Технология антиисключений может и должна быть расширена.
Мне недавно на гитхабе это приснилось. Как пить дать видел.