c++ - sqrt() pow() fabs() 不工作

标签 c++ math c++03

我正在尝试编译我的程序,我正在使用 sqrt pow 和 fabs 等函数。我确实包含了 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, %d\n", result1, result1);

否则:

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

关于c++ - sqrt() pow() fabs() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5630440/

相关文章:

c++ - 开始不调用运行

c - 找出连续乘以 3 个整数所得的第一个大于 M 的数

c++ - 点到直线的正交投影

c++ - 具有不同参数的模板

c++ - 指向所有 std::vector 元素的指针

c++ - 使用 QAtomicInt/QAtomicPointer 进行原子读取

c++ - 如何自动推断结构模板中 C 数组的大小?

c++ - 在 VS2010 中禁用所有类型的优化

python - 使用 Lambdas 从字符串表达式构建可执行函数

c++ - 获取成员的类型