ホームページ > バックエンド開発 > C++ > C/C には数値の符号を判定するための標準的な符号関数はありますか?

C/C には数値の符号を判定するための標準的な符号関数はありますか?

Mary-Kate Olsen
リリース: 2024-12-25 06:52:12
オリジナル
807 人が閲覧しました

Is There a Standard Sign Function in C/C   for Determining the Sign of Numerical Values?

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 サイトの他の関連記事を参照してください。

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