대부분의 경우 경쟁 프로그래밍에서는 데이터 유형이 보유할 수 있는 최대값 또는 최소값을 변수에 할당해야 하지만 이렇게 크고 정확한 숫자를 기억하는 것은 어려운 작업입니다. 따라서 C++에는 실제로 전체 숫자를 입력하지 않고도 변수에 직접 할당할 수 있도록 이러한 숫자를 나타내는 특정 매크로가 있습니다.
그만큼
예를 살펴보겠습니다.
C++#include // for int char macros #include // for float double macros #include using namespace std; int main() { // Displaying ranges with the help of macros cout << 'char ranges from: ' << CHAR_MIN << ' to ' << CHAR_MAX << endl; cout << 'nnshort int ranges from: ' << SHRT_MIN << ' to ' << SHRT_MAX << endl; cout << 'nint ranges from: ' << INT_MIN << ' to ' << INT_MAX << endl; cout << 'nlong int ranges from: ' << LONG_MIN << ' to ' << LONG_MAX << endl; cout << 'nfloat ranges from: ' << FLT_MIN << ' to ' << FLT_MAX << endl; return 0; }
산출
확장 파일 자바
char ranges from: -128 to 127
nshort int ranges from: -32768 to 32767
int ranges from: -2147483648 to 2147483647
long int ranges from: -9223372036854775808 to 9223372036854775807
float ranges from: 1.17549e-38 to 3.40282e+38
데이터 유형 및 해당 범위 매크로
일부 데이터 유형 매크로 목록은 다음과 같습니다.
데이터 유형 | 범위 | 최소값 매크로 | 최대값을 위한 매크로 |
---|---|---|---|
숯 | -128 ~ +127 | Char_min | CHAR_MAX |
짧은 문자 | -128 ~ +127 | SCHAR_MIN | SCHAR_MAX |
서명되지 않은 문자 | 0~255 | -- | Flying_max |
짧은 정수 | -32768 ~ +32767 | SHRT_MIN | SHRT_MAX |
부호 없는 짧은 정수 | 0~65535 | -- | USHRT_MAX |
정수 | -2147483648 ~ +2147483647 | INT_MIN | INT_MAX |
부호 없는 정수 | 0~4294967295 | -- | UINT_MAX |
긴 정수 | -9223372036854775808 ~ +9223372036854775807 | LONG_MIN 자바에 문자열 추가하기 | LONG_MAX |
부호 없는 긴 정수 | 0~18446744073709551615 | -- | 우송_맥스 |
긴 긴 정수 | -9223372036854775808 ~ +9223372036854775807 | Ship_min | LLONG_MAX |
부호 없는 긴 긴 정수 | 0~18446744073709551615 | -- | ULLONG_MAX |
뜨다 | 1.17549e-38 ~ 3.40282e+38 | Flt_min Desktop.ini가 뭐죠? | FLT_MAX |
부동 (음수) | -1.17549e-38 ~ -3.40282e+38 | -Lt_min | -FLT_MAX |
더블 | 2.22507e-308 ~ 1.79769e+308 | DBL_MIN | DBL_MAX |
이중 (음수) | -2.22507e-308 ~ -1.79769e+308 | -DBL_MIN | -DBL_MAX |
최신 C++의 데이터 유형 제한
데이터 유형의 상한 및 하한에 대한 위의 매크로 접근 방식은 C++에서 상속된 이전 C 언어 접근 방식입니다. 그러나 C++에는 프로그래머에게 동일한 정보를 제공하는 고유한 방법도 있습니다.
C++에서는 다음을 제공합니다. 숫자 제한<> 이러한 매크로에 대한 현대적인 대안으로 클래스 템플릿을 사용합니다. 이 템플릿은 데이터 유형 제한에 액세스하기 위한 보다 객체 지향적인 접근 방식을 제공합니다. 내부에 정의되어 있습니다.
예를 살펴보겠습니다.
C++#include #include using namespace std; int main() { // Displaying ranges with the help of macros cout << 'short int ranges from: ' << numeric_limits<short int>::min() << ' to ' << numeric_limits<short int>::max() << endl; cout << 'nint ranges from: ' << numeric_limits<int>::min() << ' to ' << numeric_limits<int>::max() << endl; cout << 'nlong int ranges from: ' << numeric_limits<long>::min() << ' to ' << numeric_limits<long>::max() << endl; cout << 'nfloat ranges from: ' << numeric_limits<float>::min() << ' to ' << numeric_limits<float>::max() << endl; return 0; }
산출
short int ranges from: -32768 to 32767
int ranges from: -2147483648 to 2147483647
long int ranges from: -9223372036854775808 to 9223372036854775807
float ranges from: 1.17549e-38 to 3.40282e+38
매크로 기반 접근 방식에 비해 유형이 더 안전하고 읽기 쉽기 때문에 매크로 대신 데이터 유형의 상한 및 하한을 찾는 데 이 접근 방식을 사용하는 것이 좋습니다.