climits(limits.h)란 무엇인가?
C 언어에서는 "limits.h" 헤더 파일이 사용되고, C++에서는 <climits> 헤더 파일이 사용됩니다. 두 헤더 파일에는 여러 가지 매크로가 정의되어 있으며, 이러한 한계값(limit)은 해당 자료형의 변수가 그 범위를 초과하는 값을 저장할 수 없음을 의미합니다.
주요 매크로 목록
"limits.h" 또는 <climits> 헤더 파일에 정의된 대표적인 매크로는 다음과 같습니다.
| CHAR_BIT | char 타입의 비트 수 |
| CHAR_MIN | char의 최솟값 |
| CHAR_MAX | char의 최댓값 |
| INT_MIN | int의 최솟값 |
| INT_MAX | int의 최댓값 |
| SHRT_MIN | short int의 최솟값 |
| SHRT_MAX | short int의 최댓값 |
| LONG_MIN | long int의 최솟값 |
| LONG_MAX | long int의 최댓값 |
| ULONG_MAX | unsigned long의 최댓값 |
C++ 예제 코드
다음은 C++에서 <climits> 헤더 파일을 사용하는 예제입니다.
#include<iostream>
#include<bits/stdc++.h>
#include<climits>
using namespace std;
int main() {
int x = 28;
int a = CHAR_BIT*sizeof(x);
stack<bool> s;
cout << "The number is : " << x << endl;
for (int i=1; i<=a; i++) {
s.push(x%2);
x = x/2;
}
cout << "The number of bits in a byte : " << CHAR_BIT << endl;
for (int i=1; i<=a; i++) {
cout << s.top();
s.pop();
if (i % CHAR_BIT == 0)
cout << " ";
}
cout << "\n\nThe minimum value of short int :" << SHRT_MIN;
return 0;
}실행 결과
The number is : 28 The number of bits in a byte : 8 00000000 00000000 00000000 00011100 The minimum value of short int :-32768
코드 설명
위 프로그램에서는 <climits>의 두 가지 매크로를 사용했습니다. 하나는 CHAR_BIT이고, 다른 하나는 SHRT_MIN입니다. CHAR_BIT는 char 타입이 몇 개의 비트로 구성되어 있는지를 나타내며(일반적으로 8), SHRT_MIN은 short int가 가질 수 있는 최솟값인 -32768을 나타냅니다.
int x = 28; int a = CHAR_BIT*sizeof(x); …. cout << "\n\nThe minimum value of short int :" << SHRT_MIN;
여기서 CHAR_BIT * sizeof(x)는 int형 변수 x의 전체 비트 수(8비트 × 4바이트 = 32비트)를 계산합니다. 이 값을 이용해 스택에 10진수 28을 2진수 비트 단위로 저장한 뒤, 8비트씩 구분하여 출력함으로써 2진수 변환 결과를 보기 쉽게 표현하고 있습니다.