C++ 2011 標準ライブラリの nextafter 関数と nexttoward 関数の違いは何ですか?
2021 次
2 に答える
15
関数は C に由来するため、オーバーロードすることはできません。これは、同じことを行うが異なるパラメーター (型) を持つ関数の 2 つの異なる名前を意味します。元の署名は次のとおりです。
float nextafter(float, float);
float nexttoward(float, long double);
そして今、標準は、C++ で物事をより良くするためにいくつかのオーバーロード§26.8 [c.math] p11
が必要であると述べているだけです ( ):
さらに、次のことを保証するのに十分な追加のオーバーロードがあるものとします。
- パラメータに対応する引数
double
に型がある場合、パラメータにlong double,
対応するすべての引数double
は効果的に にキャストされlong double
ます。- それ以外の場合、パラメーターに対応する引数
double
に型double
または整数型がある場合、パラメーターに対応するすべての引数double
は効果的に にキャストされdouble
ます。- それ以外の場合、パラメーターに対応するすべての引数
double
は効果的に にキャストされfloat
ます。参照: ISO C 7.5、7.10.2、7.10.6。
于 2012-08-21T22:18:56.017 に答える
1
マニュアルページを読む:
nexttoward() 関数は、long double の 2 番目の引数を持つことを除いて、nextafter() 関数と同じことを行います。
于 2012-08-21T22:15:25.443 に答える