名前


isgreater, isgreaterequal, isless, islessgreater, isunordered - 関係をテストするマクロ

書式


#include <math.h>

int isgreater(x,y);

int isgreaterequal(x,y);

int isless(x,y);

int islessequal(x,y);

int islessgreater(x,y);

int isunordered(x,y);

-std=c99 でコンパイルし、-lm でリンクする。

説明


(< のような) 通常の関係操作は、1 つのオペランドが NaN の場合には失敗する。 これは例外の原因になる。 これを避けるため、C99 では次のようなマクロを定義している。 これらのマクロはオペランドを 1 回だけ評価することが保証されている。 任意の実数の浮動小数点数型をオペランドにできる。
isgreater()
 (x) > (y) を決定する。x または y が NaN でも例外を発生しない。
isgreaterequal()
 (x) >= (y) を決定する。x または y が NaN でも例外を発生しない。
isless()
 (x) < (y) を決定する。x または y が NaN でも例外を発生しない。
islessequal()
 (x) <= (y) を決定する。x または y が NaN でも例外を発生しない。
islessgreater()
 (x) < (y) || (x) > (y) を決定する。x または y が NaN でも例外を発生しない。 このマクロは x != y と等価ではない。 なぜなら、この評価式は x または y が NaN の場合に true となるためである。
isunordered()
 x または y が NaN の場合に true となる。 それ以外の場合は false になる。

準拠


C99

注意


これらの関数は全てのハードウェアでサポートされているわけではない。 サポートされていない場合は、マクロでエミュレートされる。 エミュレートされる場合は、性能上の不利がある。 NaN について心配しなくて構わない場合は、 これらの関数を使わないこと。

関連項目


fpclassify(3), isnan(3)

openSUSE Logo

コンテンツ