C/C での数値の符号の決定
プログラミングにおいて、数値の符号を決定します (正の場合は 1、-1負の場合)は一般的な操作です。カスタムの符号計算関数を実装することは可能ですが、標準化されたソリューションがあるのではないかと疑問に思う人もいるかもしれません。
C/C の標準符号関数
いいえ、標準の符号関数はありません 数値専用の C または C 標準ライブラリによって提供されますtype.
浮動小数点数の符号計算の代替オプション
専用の符号関数はありませんが、浮動小数点数の符号を計算する代替方法があります。一般的なアプローチの 1 つは、copysign 関数を使用します。この関数は、指定された数値の絶対値と、別の指定された数値の符号を含む新しい値を返します。たとえば、次のように使用できます。#include <math.h> int sign(float val) { return copysign(1.0f, val); }
タイプセーフな C 署名関数
よりタイプセーフで移植可能なソリューションは、ジェネリック関数を定義することです。テンプレートを使用した符号関数:template <typename T> int sgn(T val) { return (T(0) < val) - (val < T(0)); }この関数は、ゼロと比較できる任意の型で機能し、符号付きと符号なしの両方をサポートします。
利点と注意点
sgn 関数は効率的で、標準に準拠しており、正確です。ただし、これはテンプレートであるため、特定のシナリオではコンパイル時間のオーバーヘッドが発生する可能性があります。以上がC/C には数値の符号を判定するための標準的な符号関数はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。