數值型別的範圍
整數型別的範圍是實現定義的。標頭檔案 <limits>
提供 std::numeric_limits<T>
模板,該模板提供所有基本型別的最小值和最大值。這些值滿足 C 標準通過 <climits>
和(> = C++ 11)<cinttypes>
標頭提供的保證。
std::numeric_limits<signed char>::min()
等於SCHAR_MIN
,小於或等於 -127。std::numeric_limits<signed char>::max()
等於SCHAR_MAX
,大於或等於 127。std::numeric_limits<unsigned char>::max()
等於UCHAR_MAX
,大於或等於 255。std::numeric_limits<short>::min()
等於SHRT_MIN
,小於或等於 -32767。std::numeric_limits<short>::max()
等於SHRT_MAX
,大於或等於 32767。std::numeric_limits<unsigned short>::max()
等於USHRT_MAX
,大於或等於 65535。std::numeric_limits<int>::min()
等於INT_MIN
,小於或等於 -32767。std::numeric_limits<int>::max()
等於INT_MAX
,大於或等於 32767。std::numeric_limits<unsigned int>::max()
等於UINT_MAX
,大於或等於 65535。std::numeric_limits<long>::min()
等於LONG_MIN
,小於或等於 -2147483647。std::numeric_limits<long>::max()
等於LONG_MAX
,大於或等於 2147483647。std::numeric_limits<unsigned long>::max()
等於ULONG_MAX
,大於或等於 4294967295。
Version >= C++ 11
std::numeric_limits<long long>::min()
等於LLONG_MIN
,小於或等於 -9223372036854775807。std::numeric_limits<long long>::max()
等於LLONG_MAX
,大於或等於 9223372036854775807。std::numeric_limits<unsigned long long>::max()
等於ULLONG_MAX
,大於或等於 18446744073709551615。
對於浮點型別 T
,max()
是最大有限值,而 min()
是最小正標準化值。為浮點型別提供了附加成員,這些型別也是實現定義的,但滿足 C 標準通過 <cfloat>
頭提供的某些保證。
- 成員
digits10
給出精度的小數位數。std::numeric_limits<float>::digits10
等於FLT_DIG
,至少為 6。std::numeric_limits<double>::digits10
等於DBL_DIG
,至少是 10。std::numeric_limits<long double>::digits10
等於LDBL_DIG
,至少為 10。
- 成員
min_exponent10
是最小負 E,使得功率 E 的 10 是正常的。std::numeric_limits<float>::min_exponent10
等於FLT_MIN_10_EXP
,最多 -37。std::numeric_limits<double>::min_exponent10
等於DBL_MIN_10_EXP
,最多 -37。std::numeric_limits<long double>::min_exponent10
等於LDBL_MIN_10_EXP
,最多 -37。
- 成員
max_exponent10
是最大 E,使得功率 E 的 10 是有限的。std::numeric_limits<float>::max_exponent10
等於FLT_MIN_10_EXP
,至少是 37。std::numeric_limits<double>::max_exponent10
等於DBL_MIN_10_EXP
,至少是 37。std::numeric_limits<long double>::max_exponent10
等於LDBL_MIN_10_EXP
,至少是 37。
- 如果成員
is_iec559
為真,則型別符合 IEC 559 / IEEE 754,因此其範圍由該標準確定。