用C ++替换fabs

时间:2016-12-05 21:41:03

标签: c++

C ++中是否有任何不同的功能,我可以替换功能fabs()? 例如:

fabs(tab[j][i]) > fabs(tab[max][i])

2 个答案:

答案 0 :(得分:2)

是的,有。 abs from <cmath>

答案 1 :(得分:0)

如果参数始终为fabs,我建议你仍然使用double - 它更可靠。风险是:有时只有abs(int)可见,因此您的double参数将被截断为int(但您可能会收到编译器警告)。

其中一个原因是,在C ++ 17之前,无法保证单个标头包含abs(int)abs(double)<cmath> 必须包含abs(double)<cstdlib> 必须包含abs(int),但当然可能包含两者。因此,更改编译器可能会更改选择的重载。

另一个例子:如果你#include "math.h"而不是<cmath>,并且使用Visual C ++,abs(double)是否可见?它将取决于Visual Studio 2013,但是当您升级到Visual Studio 2015时,您将失去它。

当然,当其参数类型未知时,使用仍应使用abs,例如它是模板的一部分。