В наследство досталось много кода, написанного уволившимся программистом. Ищу ошибки, разбираюсь. Специфика программы в том, что код был изначально написан под TMS с фиксированной точкой, затем был перенесем на ARM7, где часть операций стала производиться с вещественными числами. Есть множество приведений типов.
Нашел баг.
Код
UINT64 p1, p2;
...
REAL64 Power = (REAL64)(p1-p2);
Когда разность получалась отрицательной, результат был неверный.
Корректно ли делать приведение типов так?
Код
Power = (REAL64)p1-(REAL64)p2;
Или нужно сначала разность привести к SINT64, а затем уже к REAL64?
Сообщение отредактировал Grizzzly - Feb 28 2014, 18:45