Sqrt () pow() fab()不起作用

sqrt() pow() fabs() do not work

本文关键字:不起作用 fab pow Sqrt      更新时间:2023-10-16

我正试图编译我的程序,我正在使用SQRT pow和fab等功能。我确实包含了math.h,但由于某种原因,我得到了如下错误:

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

与其他函数相同我有这个包括:

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

我尝试包括,但仍然相同的错误。有人知道为什么他们没有被认出来吗?我的文件是。cpp而不是。c,但它是一个MFC项目。

谢谢

这是因为这些函数重载了几种类型:float, double和long double。因此,如果传入一个整数,编译器不会选择哪一个。一个简单的修复方法是简单地传递一个double(或者将传入的值乘以1.0),这应该可以解决问题。

      int value = rand();
      int result1 = (int)fabs(value*1.0); 
      printf("%d, %dn", result1, result1);
否则

:

     int value = rand();
     int result1 = (int)fabs((double)value); 
     printf("%d, %dn", result1, result1);