strcmp
数値を比較するためのようなインターフェイスを作成したい。たとえば、 C (C++ ではない) でint if 、if 、ifncmp(x, y)
を返す。> 0
x > y
0
x = y
< 0
x < y
必ずしも型を制約したくはありませんが、私の主な関心はsigned long int
s とdouble
s を比較することです。「インターフェース」は、のようにマクロにtgmath.h
することも、関数 (のセット) にすることもできます。と のすべてのペアが機能するようsigned long int
にdouble
します。たとえば(signed long int, double)
、動作するはずです。(double, double)
私が現在使用しているのは、次のマクロです。
#define ncmp(x, y) ((x) > (y)) - ((x) < (y))
この単純なマクロには落とし穴がありますか? 数値を比較するためのより優れた堅牢なソリューションはありますか?
どんな助けでも大歓迎です!