ホームページ > バックエンド開発 > C++ > C/C で Signum (Sign) 関数を実装するにはどうすればよいですか?

C/C で Signum (Sign) 関数を実装するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-18 13:47:14
オリジナル
284 人が閲覧しました

How to Implement a Signum (Sign) Function in C/C  ?

C/C の符号関数 (Signum)

一般にsignum または sgn として知られる符号関数は、数値の符号を決定します。価値。通常、負の値の場合は -1、ゼロの場合は 0、正の値の場合は 1 を返します。 C および C には、数値の符号の計算専用の組み込み標準ライブラリ関数はありません。ただし、独自の符号関数を実装するために使用できる方法がいくつかあります。

タイプセーフな C 符号関数の実装

で符号関数を実装する 1 つのアプローチC では、さまざまな数値型で機能するテンプレートベースの関数を使用します。そのような関数の例を次に示します。

template <typename T>
int sgn(T val) {
    return (T(0) < val) - (val < T(0));
}
ログイン後にコピー

この関数はテンプレートのタイプ セーフを活用し、整数、浮動小数点、倍精度浮動小数点数などのさまざまな数値データ型を操作できるようにします。入力値をゼロと比較することで効率的に符号を決定し、負の値の場合は -1、ゼロの場合は 0、正の値の場合は 1 を返します。

この実装の利点:

  • タイプセーフで、さまざまな数値型を処理できます。
  • 実際の数値型を実装します。 -1、0、または 1 の値を持つsignum 関数。
  • ブランチレス操作により速度が最適化されています。
  • 標準に準拠しており、標準 C 環境に適しています。

注意事項:

  • です。テンプレート関数。これにより、場合によってはコンパイル時間が長くなる可能性があります。
  • 一部のコンパイラでは、符号なし型を使用すると警告が発行される場合があります。

したがって、C と C では提供されません。ネイティブの符号関数であるため、上記のメソッドを使用して独自の符号関数を簡単に実装し、コード内の数値の符号を決定できます。

以上がC/C で Signum (Sign) 関数を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート