C++のfmax()関数とfmin()関数の使い方を徹底解説
この記事では、C++におけるfmax()およびfmin()関数の使い方について詳しく解説します。これらの関数は、cmathヘッダーファイルに定義されており、数値比較を簡単に行うための標準ライブラリ関数です。
fmax()とfmin()の基本
fmax()とfmin()は、それぞれ最大値と最小値を返す関数です。引数として指定できるのは、float、double、long double型の値で、2つの引数を受け取って比較を行います。
また、引数の型が異なる場合(例えばfloatとdoubleを比較する場合など)でも、暗黙的に型変換(キャスト)が行われた上で適切な結果が返されるため、異なる浮動小数点型同士の比較も問題なく実行できます。
主な特徴
cmathヘッダーをインクルードするだけで使用可能- 正の値同士、負の値同士、符号が混在する値など、あらゆる組み合わせに対応
- 異なる浮動小数点型間の比較では自動的に型変換が行われる
サンプルコード
以下は、fmax()とfmin()を使った具体的な使用例です。正の値同士、符号が異なる値、負の値同士という3つのパターンで比較を行っています。
#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;
main() {
double res;
// fmax() の使用例
res = fmax(50.0, 10.0); // 両方が正の値の場合の比較
cout << fixed << setprecision(4) << "fmax(50.0, 10.0) = " << res << endl;
res = fmax(-50.0, 10.0); // 符号が異なる値の比較
cout << fixed << setprecision(4) << "fmax(-50.0, 10.0) = " << res << endl;
res = fmax(-50.0, -10.0); // 両方が負の値の場合の比較
cout << fixed << setprecision(4) << "fmax(-50.0, -10.0) = " << res << endl;
// fmin() の使用例
res = fmin(50.0, 10.0); // 両方が正の値の場合の比較
cout << fixed << setprecision(4) << "fmin(50.0, 10.0) = " << res << endl;
res = fmin(-50.0, 10.0); // 符号が異なる値の比較
cout << fixed << setprecision(4) << "fmin(-50.0, 10.0) = " << res << endl;
res = fmin(-50.0, -10.0); // 両方が負の値の場合の比較
cout << fixed << setprecision(4) << "fmin(-50.0, -10.0) = " << res << endl;
}実行結果
fmax(50.0, 10.0) = 50.0000 fmax(-50.0, 10.0) = 10.0000 fmax(-50.0, -10.0) = -10.0000 fmin(50.0, 10.0) = 10.0000 fmin(-50.0, 10.0) = -50.0000 fmin(-50.0, -10.0) = -50.0000
まとめ
fmax()とfmin()を使えば、浮動小数点数の大小比較をシンプルかつ安全に記述できます。特に、符号の組み合わせや異なる型同士の比較においても正しく動作するため、数値処理を行うプログラムで積極的に活用するとよいでしょう。
-
C++とJavaにおけるforeachループの使い方をわかりやすく解説
C++とJavaには、通常のforループとは異なる「foreachループ」(Javaでは拡張forループとも呼ばれます)が用意されています。このループはC言語には存在せず、C++ではC++11から、JavaではJDK 1.5.0から導入されました。 foreachループの最大のメリットは、初期化・条件判定・インクリメント/デクリメントといった処理を記述せずに済むため、配列やコンテナ内の各要素へすばやくシンプルにアクセスできる点です。名前は「foreach」ですが、実際の記述には「for」キーワードを使用する点に注意しましょう。構文は通常のforループとは異なります。 foreachループの基本
-
C++のdelete演算子とfree()関数の違いと使い方を徹底解説
C++やC言語で動的に確保したメモリを解放する方法として、主にdelete演算子とfree()関数の2つがあります。本記事では、それぞれの構文、使い方、そして実際のコード例を通して、両者の違いをわかりやすく解説します。 delete演算子とは delete演算子は、new演算子によって動的に確保されたメモリを解放するために使用されます。プログラマは、この演算子を使って自分で作成したポインタ変数が指すメモリを自由に解放できます。 C++におけるdelete演算子の基本構文は以下の通りです。 delete ポインタ変数名; また、new[]で確保した配列形式のメモリブロックを解放する場合は、次の