C/C++におけるINT_MAXとINT_MINの基本と実践的な応用例
このチュートリアルでは、C/C++で使用されるINT_MAXとINT_MINについて詳しく解説します。
INT_MAXとINT_MINは、ヘッダーファイル(<climits> や <limits.h>)で定義されているマクロであり、int型が表現できる最大値と最小値を示します。これらを活用することで、変数や要素の初期値として「事実上の上限・下限」を設定でき、アルゴリズムの実装がシンプルかつ安全になります。
基本的な使い方
まずは、INT_MAXとINT_MINの値を出力する簡単なプログラムを見てみましょう。
#include<bits/stdc++.h>
int main(){
printf("%d\n", INT_MAX);
printf("%d", INT_MIN);
return 0;
}
出力結果
2147483647 -2147483648
多くの環境では、int型は32ビットで表現されるため、INT_MAXは2147483647(2^31 - 1)、INT_MINは-2147483648(-2^31)となります。
応用例:配列内の最小値を求める
これらのマクロが特に役立つのが、配列の中から最小値(または最大値)を探索する場面です。MIN変数をINT_MAXで初期化しておけば、配列のどの要素よりも大きい状態からスタートでき、確実に正しい最小値を求められます。
サンプルコード
#include <bits/stdc++.h>
// 配列内の最小要素を計算する関数
int compute_min(int arr[], int n){
int MIN = INT_MAX;
for (int i = 0; i < n; i++)
MIN = std::min(MIN, arr[i]);
std::cout << MIN;
}
int main(){
int arr[] = { 2019403813, 2147389580, 2145837140, 2108938594, 2112076334 };
int n = sizeof(arr) / sizeof(arr[0]);
compute_min(arr, n);
return 0;
}
出力結果
2019403813
このように、INT_MAXで初期化した変数に対して各要素と比較を行い、より小さい値で更新していくことで、配列全体の最小値を効率よく取得できます。同様の手法は、最大値を求める場合にもINT_MINを初期値として使うことで応可能です。
-
【C/C++】const int* と int* const の違いを徹底解説!宣言の読み方のコツも紹介
はじめに:constとポインタの組み合わせ C/C++では、「const」と「ポインタ」を組み合わせた宣言が複数存在し、それぞれ意味が異なるため、初心者がつまずきやすいポイントの一つです。この記事では、代表的な4つのパターンを整理し、何が変更できて何が変更できないのかを具体例とともに解説します。 4つの基本パターン int* // intへのポインタ int const * // constなintへのポインタ int * const // intへのconstポインタ int const * const // con
-
C++とC#におけるforeachループの使い方を徹底解説
コレクションや配列の各要素を順番に処理したい場合、foreachループは非常に便利な構文です。従来のforループではインデックスの管理が必要でしたが、foreachを使えば要素そのものを直接取り出して処理できるため、コードがシンプルになり、バグも減らせます。この記事では、C++とC#それぞれにおけるforeachの書き方と実行例をわかりやすく解説します。 C++におけるforeach(範囲ベースforループ) C++には厳密には「foreach」という名前のキーワードは存在しませんが、C++11で導入された範囲ベースforループ(range-based for loop)が同等の機能を提供し