sqrt () pow () fabs () не работают - PullRequest
2 голосов
/ 12 апреля 2011

Я пытаюсь скомпилировать свою программу, где я использую такие функции, как sqrt pow и fabs.У меня действительно есть math.h, но по какой-то причине я получаю такие ошибки, как:

    error C2668: 'fabs' : ambiguous call to overloaded function

То же самое для остальных функций, которые у меня есть:

    #include "stdafx.h"
    #include "math.h"

все те же ошибки.Кто-нибудь знает, почему их не признают?мой файл .cpp не .c, но это проект MFC.

спасибо

1 Ответ

8 голосов
/ 12 апреля 2011

Это потому, что эти функции перегружены для нескольких типов: 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);
...