Это потому, что эти функции перегружены для нескольких типов: float, double и long double.Таким образом, если вы передадите целое число, компилятор не определит, какой из них выбрать.Простое решение - просто передать двойное число (или умножить то, что вы передаете на 1,0), это должно решить проблему.
int value = rand();
int result1 = (int)fabs(value*1.0);
printf("%d, %d\n", result1, result1);
в противном случае:
int value = rand();
int result1 = (int)fabs((double)value);
printf("%d, %d\n", result1, result1);