在VS2005中,atan2()的参数不正确?

时间:2015-04-02 08:59:15

标签: c++ visual-studio-2005 atan2

Visual Studio 2005提供的math.h标头中似乎存在错误。

double  __cdecl atan2(__in double _Y, __in double _X);

inline float atan2f(__in float _X, __in float _Y)
    {return ((float)atan2((double)_X, (double)_Y)); }

atan2f()函数的参数似乎相反。

我不确定Visual Studio的更高版本是否会出现这种情况。有谁知道这里的分数是什么?

1 个答案:

答案 0 :(得分:0)

没有影响的差异不值得担心。

编译器(实际上)忽略atan2()的参数名称,因为它不是定义(即函数实现)。只要函数定义(实现)计算第一个参数除以第二个参数的弧度的反正切值,atan2()的实现就是正确的。

避免atan2f()定义中的错误的重要一点是,第一个和第二个参数以相同的顺序传递给atan2()。这种情况正在发生,所以(假设atan2()的定义是正确的)没有功能缺陷,表达式atan2f(a,b)将计算a/b的反正切 - 这是标准所要求的。< / p>

唯一潜在的缺陷是人类理解功能的作用。但是,一般来说,建议人们参考标准函数的文档来理解而不是头文件。这是一个风格上的缺陷,而不是功能性缺陷。