Результат abs (-2147483648 )равен -2147483648, не так ли? это кажется неприемлемым.
printf("abs(-2147483648): %d\n", abs(-2147483648));
выход:
abs(-2147483648): -2147483648