數值型別的範圍

整數型別的範圍是實現定義的。標頭檔案 <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。

對於浮點型別 Tmax() 是最大有限值,而 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,因此其範圍由該標準確定。