2018年01月22日
《その251》 numeric_limitsクラステンプレート
numeric_limitsクラステンプレート
<limits>ヘッダで提供される numeric_limitsクラステンプレート
template <class Type> class numeric_limits;
には、各型用に特殊化されたクラステンプレートが用意されています。
以下は、その一部です。
std::numeric_limits
namespace std {
template <class Type> class numeric_limits;
template<> class numeric_limits<bool>
template<> class numeric_limits<char>
template<> class numeric_limits<signed char>
template<> class numeric_limits<unsigned char>
template<> class numeric_limits<short>
template<> class numeric_limits<int>
template<> class numeric_limits<long>
template<> class numeric_limits<long long>
template<> class numeric_limits<unsigned short>
template<> class numeric_limits<unsigned int>
template<> class numeric_limits<unsigned long>
template<> class numeric_limits<unsigned long long>
template<> class numeric_limits<float>
template<> class numeric_limits<double>
template<> class numeric_limits<long double>
}
各クラステンプレートは、次のような静的メンバを持っています。以下は、その一部です。
◎min()
最小値
◎max()
最大値
◎digits
基数 radix において表現できる桁数,整数型の場合は、符号ビット以外のビット数
◎is_signed
符号付き型かどうか
◎is_integer
整数型かどうか
以下は、unsigned char型 で試してみたものです。
#include <limits>
#include <iostream>
using namespace std;
int main()
{
typedef numeric_limits<unsigned char> nl;
cout << "min() " << int(nl::min()) << '\n';
cout << "max() " << int(nl::max()) << '\n';
cout << "digits " << nl::digits << '\n';
cout << "is_signed " << nl::is_signed << '\n';
cout << "is_integer " << nl::is_integer << '\n';
}
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7227175
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック