0

math.hVisual Studio 2005 提供的标头中似乎有错误。

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 是否是这种情况。有谁知道这里的分数是多少?

4

1 回答 1

0

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

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

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

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

于 2015-04-02T09:13:58.000 回答