<limits.h>는 C와 C++에서 사용하는 헤더 파일로, 데이터 타입의 크기나 값의 범위와 관련된 상수들을 정의하고 있다. 이 헤더 파일을 통해 각 데이터 타입의 최대값과 최소값을 얻을 수 있으며, 이를 이용해 프로그램에서 다양한 계산을 안전하게 처리할 수 있다.
INT_MAX란?INT_MAX는 int형 변수로 표현할 수 있는 가장 큰 값을 나타낸다.
int형 변수는 4바이트(32비트) 크기를 갖는 것이 일반적이며, 이때 INT_MAX는 2,147,483,647이다.2^31 - 1이고, 이 값이 INT_MAX로 정의된다.INT_MAX는 limits.h에서 다음과 같이 정의되어 있다:
#define INT_MAX 2147483647
INT_MAX를 사용할 때는, 어떤 값이 정수형의 범위를 벗어나는지, 또는 알고리즘에서 최소값을 찾아야 할 때 초기 값을 설정하는 용도로 자주 사용된다.
<limits.h>에서 제공하는 상수들<limits.h>는 INT_MAX 외에도 다양한 데이터 타입에 대한 최소값과 최대값을 정의하고 있다. 여기에는 다음과 같은 상수들이 포함된다:
CHAR_BIT: char 타입이 차지하는 비트 수 (일반적으로 8비트)SCHAR_MIN: signed char 타입의 최소값 (-128)SCHAR_MAX: signed char 타입의 최대값 (127)UCHAR_MAX: unsigned char 타입의 최대값 (255)SHRT_MIN: short 타입의 최소값 (-32,768)SHRT_MAX: short 타입의 최대값 (32,767)USHRT_MAX: unsigned short 타입의 최대값 (65,535)INT_MIN: int 타입의 최소값 (-2,147,483,648)INT_MAX: int 타입의 최대값 (2,147,483,647)UINT_MAX: unsigned int 타입의 최대값 (4,294,967,295)LONG_MIN: long 타입의 최소값LONG_MAX: long 타입의 최대값ULONG_MAX: unsigned long 타입의 최대값INT_MAX를 사용하는 대표적인 예는 알고리즘에서 최대값을 갱신하는 부분이다. 예를 들어, 어떤 값 중 최소값을 찾는 알고리즘을 구현할 때, 처음에 min 변수를 매우 큰 값인 INT_MAX로 초기화한 후, 각 값과 비교하여 더 작은 값을 찾는다.
#include <iostream>
#include <limits.h>
int main() {
int minValue = INT_MAX;
int numbers[] = {5, 3, 8, 2, 10};
for (int num : numbers) {
if (num < minValue) {
minValue = num;
}
}
std::cout << "The minimum value is: " << minValue << std::endl; // 출력: 2
return 0;
}
위 예제에서는 minValue를 처음에 INT_MAX로 설정한 뒤, 배열의 값들을 순차적으로 비교하여 그 중 가장 작은 값을 찾는다.