我认为abs并且fabs在使用时表现不同math.h.但是,当我只使用cmath和std::abs,我必须使用std::fabs或fabs?或者这不是定义?
Mik*_*our 121
在C++中,使用它总是足够的std::abs; 所有数值类型都超载了.
在C中,abs只适用于整数,并且您需要fabs浮点值.这些在C++中可用(以及所有C库),但不需要使用它们.
Ala*_*ing 22
这仍是好的使用fabs了double和float参数.我更喜欢这个,因为它确保如果我不小心剥离std::了abs,那么浮点输入的行为保持不变.
我只花了10分钟调试这个问题,由于我自己的错误abs而不是使用std::abs.我认为它using namespace std;会推断,std::abs但它没有,而是使用C版本.
无论如何,我认为使用fabs而不是abs浮点输入作为一种清楚地记录你的意图的方式是好的.
小智 10
还有一个原因可以std::fabs明确推荐浮点输入.
如果您忘记包含<cmath>,std::abs(my_float_num)则可以std::abs(int)代替std::abs(float).很难注意到.