C++의 INT_MAX 및 INT_MIN 매크로 식

Jinku Hu 2023년10월12일
  1. INT_MININT_MAX를 사용하여 C++에서 유형별 제한에 액세스
  2. INT_MININT_MAX를 사용하여 C++에서 난수 생성
C++의 INT_MAX 및 INT_MIN 매크로 식

이 기사에서는 C++에서 INT_MAX 및 INT_MIN 매크로 표현식을 활용하는 방법에 대한 여러 방법을 보여줍니다.

INT_MININT_MAX를 사용하여 C++에서 유형별 제한에 액세스

C++ 언어는 점유해야하는 메모리 양과 해당 최대 / 최소 값에 대한 몇 가지 사양으로 여러 내장 데이터 유형을 정의합니다. 정수와 같은 데이터 유형은 문제에 대해 가능한 최대 값 및 최소값을 고려해야하는 계산에 일반적으로 사용됩니다. 제한은 특정 유형의 스토리지 크기에 따라 다르지만 하드웨어 플랫폼에 따라 다릅니다. 따라서 고정 핸들을 사용하여 이러한 값에 액세스해야합니다. 따라서 매크로 표현식-INT_MININT_MAX가 필요합니다. 이는signed int데이터 유형의 최소 및 최대 값에 해당합니다. 다음 예제는<climits>헤더에서 사용할 수있는 여러 매크로 표현식을 보여줍니다.

#include <climits>
#include <iostream>

int main() {
  printf("CHAR_BIT   = %d\n", CHAR_BIT);
  printf("MB_LEN_MAX = %d\n", MB_LEN_MAX);
  printf("\n");

  printf("CHAR_MIN   = %+d\n", CHAR_MIN);
  printf("CHAR_MAX   = %+d\n", CHAR_MAX);
  printf("SCHAR_MIN  = %+d\n", SCHAR_MIN);
  printf("SCHAR_MAX  = %+d\n", SCHAR_MAX);
  printf("UCHAR_MAX  = %u\n", UCHAR_MAX);
  printf("\n");

  printf("SHRT_MIN   = %+d\n", SHRT_MIN);
  printf("SHRT_MAX   = %+d\n", SHRT_MAX);
  printf("USHRT_MAX  = %u\n", USHRT_MAX);
  printf("\n");

  printf("INT_MIN    = %+d\n", INT_MIN);
  printf("INT_MAX    = %+d\n", INT_MAX);
  printf("UINT_MAX   = %u\n", UINT_MAX);
  printf("\n");

  printf("LONG_MIN   = %+ld\n", LONG_MIN);
  printf("LONG_MAX   = %+ld\n", LONG_MAX);
  printf("ULONG_MAX  = %lu\n", ULONG_MAX);
  printf("\n");

  printf("LLONG_MIN  = %+lld\n", LLONG_MIN);
  printf("LLONG_MAX  = %+lld\n", LLONG_MAX);
  printf("ULLONG_MAX = %llu\n", ULLONG_MAX);
  printf("\n");

  return EXIT_SUCCESS;
}

출력:

CHAR_BIT   = 8
MB_LEN_MAX = 16

CHAR_MIN   = -128
CHAR_MAX   = +127
SCHAR_MIN  = -128
SCHAR_MAX  = +127
UCHAR_MAX  = 255

SHRT_MIN   = -32768
SHRT_MAX   = +32767
USHRT_MAX  = 65535

INT_MIN    = -2147483648
INT_MAX    = +2147483647
UINT_MAX   = 4294967295

LONG_MIN   = -9223372036854775808
LONG_MAX   = +9223372036854775807
ULONG_MAX  = 18446744073709551615

LLONG_MIN  = -9223372036854775808
LLONG_MAX  = +9223372036854775807
ULLONG_MAX = 18446744073709551615

INT_MININT_MAX를 사용하여 C++에서 난수 생성

난수는 종종 고정 된 범위 사이에서 생성됩니다. 범위 매개 변수를 적절하게 지정하고 생성 된 결과를 오버플로하지 않도록 숫자 데이터 유형 제한을 갖는 것이 유용합니다. 다음 예제 코드는uniform_int_distribution을 사용하여 생성 된 숫자의 범위를 제한합니다. 이 경우INT_MAXINT_MIN값을 지정하여 사용 가능한 최대 범위에서 정수를 검색했습니다.

#include <climits>
#include <iomanip>
#include <iostream>
#include <random>

using std::cout;
using std::endl;
using std::setprecision;

int main() {
  std::random_device rd;
  std::default_random_engine eng(rd());
  std::uniform_int_distribution<int> distr(INT_MIN, INT_MAX);

  for (int n = 0; n < 6; ++n) {
    cout << distr(eng) << "\n";
  }
  cout << endl;

  return EXIT_SUCCESS;
}
-895078088
1662821310
-636757160
1830410618
1031005518
-438660615
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C++ Integer