웹사이트 검색

C/C++에서 INT_MAX 및 INT_MIN 사용


이 기사에서는 C/C++에서 INT_MAX 및 INT_MIN을 사용하는 방법을 살펴보겠습니다.

이들은 실제로 최대 및 최소 정수 값을 나타내는 유용한 매크로입니다.

몇 가지 예를 들어 살펴보겠습니다.

INT_MAX 및 INT_MIN 사용

INT_MAX는 최대 정수 값을 나타내는 매크로입니다. 마찬가지로 INT_MIN은 최소 정수 값을 나타냅니다.

이러한 매크로는 헤더 파일에 정의되어 있으므로 포함해야 합니다.

#include <limits.h>

INT_MAX

INT_MIN

모든 정수 변수는 INT_MIN과 INT_MAX 사이에 있어야 합니다.

일반적으로 정수는 4바이트(32비트)로 저장됩니다.

즉, 거의 모든 기계에서 최대 정수 값은 2^(31) - 1=+2147483647입니다.

최소 정수 값은 -(2^31)=-2147483648입니다.

우리 기계에 대해 이것을 확인합시다.

#include <stdio.h>
#include <limits.h>

int main() {
    printf("Maximum Integer Value: %d\n", INT_MAX);
    printf("Minimum Integer Value: %d\n", INT_MIN);
    return 0;
}

산출

Maximum Integer Value: 2147483647
Minimum Integer Value: -2147483648

실제로 우리는 우리가 예측하는 것을 얻습니다.

정수 오버플로 또는 언더플로를 올바르게 예측하기 위해 다른 예를 들어 보겠습니다.

#include <stdio.h>
#include <limits.h>

int main() {
    int value = 0;
    while (value >= 0) {
        // Check for overflow
        if (value == INT_MAX) {
            printf("value = %d. Possible overflow!\n", value);
        }
        value ++;
    }
    printf("Now, value = %d\n", value);
    value = 0;
    while (value <= 0) {
        // Check for underflow
        if (value == INT_MIN) {
            printf("value = %d. Possible underflow!\n", value);
        }
        value --;
    }
    printf("Now, value = %d\n", value);
    return 0;
}

산출

value = 2147483647. Possible overflow!
Now, value = -2147483648
value = -2147483648. Possible underflow!
Now, value = 2147483647

실행하는 데 몇 초가 걸리지만 실제로 예상한 대로 작동합니다.

정수는 INT_MIN으로 오버플로되고 INT_MAX로 언더플로됩니다.

이는 값의 이러한 점프를 감지하는 데 유용합니다.

이 매크로가 필요한 이유는 무엇입니까?

종종 특정 알고리즘의 경우 변수를 최저/최고 값으로 초기화해야 하는 경우가 있습니다.

데이터 유형의 비트 수는 기계에 따라 다를 수 있습니다.

최대값/최소값을 일관되게 사용하려면 모든 사람이 동일한 매크로를 사용할 수 있으면 편리합니다!

이것이 바로 이러한 종류의 매크로가 존재하는 이유입니다.

  • 실제 값을 기억하지 않도록
  • 모든 시스템에서 일관된 프로그래밍 패턴을 유지
  • 사용하기 매우 편리함

바라건대 이러한 이유 때문에 C/C++ 라이브러리를 빌드할 때마다 이러한 종류의 매크로를 사용하도록 확신할 수 있습니다.

결론

이 기사에서는 C/C++에서 INT_MAX 및 INT_MIN 매크로를 사용하는 방법에 대해 알아보았습니다.

유사한 내용을 보려면 C 프로그래밍에 대한 자습서 섹션을 참조하십시오.

참조

  • climits의 cplusplus.com 페이지