C++의 데이터 유형 범위 및 해당 매크로
대부분의 경우 경쟁 프로그래밍에서는 데이터 유형이 보유할 수 있는 최대값 또는 최소값을 변수에 할당해야 하지만 이렇게 크고 정확한 숫자를 기억하는 것은 어려운 작업입니다. 따라서 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 < < ' n nshort int ranges from: ' < < SHRT_MIN < < ' to ' < < SHRT_MAX < < endl ; cout < < ' n int ranges from: ' < < INT_MIN < < ' to ' < < INT_MAX < < endl ; cout < < ' n long int ranges from: ' < < LONG_MIN < < ' to ' < < LONG_MAX < < endl ; cout < < ' n float 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 | 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 < < ' n int ranges from: ' < < numeric_limits < int >:: min () < < ' to ' < < numeric_limits < int >:: max () < < endl ; cout < < ' n long int ranges from: ' < < numeric_limits < long >:: min () < < ' to ' < < numeric_limits < long >:: max () < < endl ; cout < < ' n float 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매크로 기반 접근 방식에 비해 유형이 더 안전하고 읽기 쉽기 때문에 매크로 대신 데이터 유형의 상한 및 하한을 찾는 데 이 접근 방식을 사용하는 것이 좋습니다.