поправка: abs(int), fabs(double), то есть
Код:

double x = abs(-0.1);
printf("%ld",x);
// выдаст 0.0
Лучше пишите на C++. Там это исправили: std::abs(int), sta::abs(double), tamplate<class T> std::abs(const complex<T>&)
Код:

using namespace std;
double x = abs(-0.1);
cout << x;
// выдаст 0.1