在 C++ 中使用內建型別的極限值宏,需包含標準頭文件:
#include <climits> // C++ 標準庫,對應 C 的 limits.h
| 宏名稱 | 說明 | 典型值(32 位元系統) |
|---|---|---|
CHAR_BIT | 位元組的位數 | 8 |
CHAR_MAX | char 最大值 | 127 (signed) / 255 (unsigned) |
CHAR_MIN | char 最小值 | -128 (signed) / 0 (unsigned) |
SCHAR_MAX | signed char 最大值 | 127 |
SCHAR_MIN | signed char 最小值 | -128 |
UCHAR_MAX | unsigned char 最大值 | 255 |
SHRT_MAX | short 最大值 | 32767 |
SHRT_MIN | short 最小值 | -32768 |
USHRT_MAX | unsigned short 最大值 | 65535 |
INT_MAX | int 最大值 | 2147483647 |
INT_MIN | int 最小值 | -2147483648 |
UINT_MAX | unsigned int 最大值 | 4294967295 |
LONG_MAX | long 最大值 | 2147483647 (32位) / 9223372036854775807 (64位) |
LONG_MIN | long 最小值 | -2147483648 (32位) / -9223372036854775808 (64位) |
ULONG_MAX | unsigned long 最大值 | 4294967295 (32位) / 18446744073709551615 (64位) |
LLONG_MAX | long long 最大值 (C++11) | 9223372036854775807 |
LLONG_MIN | long long 最小值 (C++11) | -9223372036854775808 |
ULLONG_MAX | unsigned long long 最大值 (C++11) | 18446744073709551615 |
C++11 引入 <limits> 標頭,提供型別安全的 std::numeric_limits<T>::max() / min(),建議新專案優先使用:
#include <limits>
#include <iostream>
int main() {
std::cout << "int max: " << std::numeric_limits<int>::max() << '\n';
std::cout << "double max: " << std::numeric_limits<double>::max() << '\n';
return 0;
}
<climits> 宏為預處理器常數,可用於 #if 編譯期判斷。std::numeric_limits 支援所有算術型別,且可擴展至使用者定義型別。<cfloat> (FLT_MAX, DBL_MAX 等) 或 std::numeric_limits<float>::max()。