ilogb
、 ilogbf
、 ilogbl
指定した値を、バイアスをかけない 2 進数の指数として表す整数を取得します。
構文
int ilogb(
double x
);
int ilogb(
float x
); //C++ only
int ilogb(
long double x
); //C++ only
int ilogbf(
float x
);
int ilogbl(
long double x
);
#define ilogbl(X) // Requires C11 or higher
パラメーター
x
指定した値。
戻り値
成功した場合、これらの関数はsigned int
値としてx
の base-2 指数を返します。
それ以外の場合、関数は、 <math.h> で定義されている次のいずれかの値を返します。
入力 | 結果 |
---|---|
±0 | FP_ILOGB0 |
± INF、± NAN、IND | FP_ILOGBNAN |
エラーは、_matherr
で指定されたとおりに報告されます。
解説
C++ ではオーバーロードが可能であるため、ilogb
型および float
型を受け取って返す long double
のオーバーロードを呼び出すことができます。 C プログラムでは、<tgmath.h> マクロを使用してこの関数を呼び出す場合を除き、ilogb
では常に double
を受け取って返します。
<tgmath.h>ilogb()
マクロを使用する場合は、引数の型によって、この関数のどのバージョンが選択されるかが決定されます。 詳細については、「ジェネリック型数値演算」を参照してください。
この関数を呼び出すことは、これに相当する logb
関数を呼び出してから、戻り値を int
へキャストすることに似ています。
要件
ルーチンによって返される値 | C ヘッダー | C++ ヘッダー |
---|---|---|
ilogb 、 ilogbf 、 ilogbl |
<math.h> | <cmath> |
ilogb マクロ |
<tgmath.h> |
互換性の詳細については、「 Compatibility」を参照してください。