102

を使用すると、absfabsの動作が異なると思いmath.hます。しかし、 and だけをcmath使用する場合、 orstd::absを使用する必要がありますstd::fabsfabs? それとも、これは定義されていませんか?

4

4 に答える 4

126

std::absC++ では、常に;を使用するだけで十分です。すべての数値型に対してオーバーロードされています。

C では、整数でのみ機能し、浮動小数点値absが必要です。fabsこれらは C++ で (すべての C ライブラリと共に) 利用できますが、それらを使用する必要はありません。

于 2010-06-25T13:06:30.683 に答える
23

fabsfordoublefloat引数を使用しても問題ありません。私がこれを好むのは、誤って を取り除いた場合でも、浮動小数点入力の動作が同じままであることを保証するためstd::ですabs

の代わりabsstd::abs. using namespace std;が推論すると思ってstd::absいましたが、そうではなく、代わりに C バージョンを使用していました。

とにかく、意図を明確に文書化する方法として、浮動小数点入力のfabs代わりに使用するのが良いと思います。abs

于 2012-12-09T22:44:46.957 に答える
13

std::fabs浮動小数点入力を明示的に推奨するもう 1 つの理由があります。

<cmath> を含めるのを忘れた場合は、std::abs(my_float_num)代わりstd::abs(int)std::abs(float). 気づきにくい。

于 2016-07-14T07:19:25.853 に答える