Вы должны использование std::abs
, который имеет перегрузки для типов примитивов.
Вы падаете до версии C++ в одном случае и старой версии C (который преобразовывает ее параметры в целочисленные типы) в другом.
Вещи избежать: (1) using namespace std;
( вот то, почему ), и (2) не наличие соответствующего #include
с для введения функциональности Вам нужно. не Делают , полагаются на реализации библиотеки стандарта C++ для включения файлов для Вас неявно.
Некоторые компиляторы предупредят Вас о преобразовании "с потерями" при установке уровня предупреждения соответственно.