C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のisinf()関数とは?構文・戻り値・使い方を実例付きで解説

本記事では、C++のisinf()関数について、その構文、動作の仕組み、そして戻り値の挙動を詳しく解説します。

isinf()は、<cmath>ヘッダーファイルに含まれるC++の組み込み関数です。引数として渡された数値が無限大(infinity)であるかどうかを判定するために使用され、正の無限大・負の無限大のどちらであっても検出できます。

判定結果は以下のように返されます。

  • 数値が無限大の場合 → 非ゼロの値(true)を返す
  • 数値が有限の場合 → 0(false)を返す
  • 数値がNAN(非数)の場合 → 0(false)を返す

構文

isinf()は、オーバーロードによって複数の浮動小数点型に対応しています。

bool isinf(float n);

または

bool isinf(double n);

または

bool isinf(long double n);

この関数が受け取る引数は浮動小数点数1つだけです。

戻り値

関数はブール値(bool)を返します。

  • false(無限大ではない)の場合 → 0
  • true(無限大である)の場合 → 1

使用例1:無限大と有限数の判定

#include <iostream>
#include <cmath>
using namespace std;
int main() {
    float a = 0.0, b = 10.0;
    isinf(a/b)?cout<<"\nFinite":cout<<"\nFinite"; // 数値が無限大か有限かを判定
    isinf(b/a)?cout<<"\nInfinite":cout<<"\nFinite";
}

出力結果

Finite
Infinite

このコードでは、a/b(0÷10=0)は有限の数値なのでisinf()はfalseを返し「Finite」と表示されます。一方、b/a(10÷0)は浮動小数点演算において正の無限大となるため、trueが返され「Infinite」と表示されます。

使用例2:通常の数値とNANの判定

#include <iostream>
#include <cmath>
using namespace std;
int main() {
    float a = 0.0;
    cout<<isinf(a);
    cout<<isinf(sqrt(-1.0));
}

出力結果

0 0

最初のisinf(a)は、aが0.0という有限の数値であるため0(false)を返します。次のisinf(sqrt(-1.0))は、負の数の平方根を求めた結果がNAN(Not a Number:非数)になるため、こちらも0(false)を返します。このように、isinf()はNANを無限大とは判定しない点に注意が必要です。

まとめ

isinf()関数を使うことで、浮動小数点数が無限大かどうかを簡単にチェックできます。ゼロ除算による無限大の発生や、計算結果の異常検知など、数値処理の安全性を高めたい場面で活用できる便利な関数です。

  1. C++のlog()関数とは?自然対数を求める方法をわかりやすく解説

    C++の標準ライブラリには、数学的な計算を行うための便利な関数が多数用意されています。その中でもlog()関数は、数値の自然対数(ネイピア数 e を底とする対数)を求めるために使用される重要な関数です。log()関数の基本情報C/C++のライブラリ関数 double log(double x) は、引数 x の自然対数(底が e の対数)を返します。この関数を使用するには、ヘッダーファイル <cmath> をインクルードする必要があります。関数の宣言double log(double x)パラメータと戻り値パラメータ: x は浮動小数点型(double)の値です。自然対数を求めたい

  2. C++のswap()関数とは?2つの変数の値を入れ替える方法をサンプルコード付きで解説

    swap()関数とは C++のswap()関数は、2つの値を入れ替える(交換する)ための関数です。この関数を利用すれば、一時的な第三の変数を自分で用意することなく、2つの変数の値を簡単に入れ替えることができます。 swap()関数の構文 void swap(int variable_name1, int variable_name2); 変数に値を代入してswap()関数に渡した場合、関数内では値の入れ替えが行われますが、呼び出し元の実際の変数の値は変わりません。これは、引数が「値渡し」で渡されるためです。実際の変数の値を入れ替えたい場合は、後述する「参照渡し」を使用します。 例1:s