5.7.6 고정폭 정수 타입
지금까지 소개한 정수 타입의 정밀도는 limits.h에 정의된 UINT_MAX나 LONG_MIN과 같은 매크로를 이용하여 간접적으로 검사할 수 있다. C 표준에서는 이런 타입에 대해 최소한의 정밀도만 제공한다. 부호 없는 타입에 대한 최소 정밀도(minimal precision)는 다음과 같다.
▼ 표 5-8 부호 없는 타입에 대한 최소 정밀도
타입 |
최소 정밀도 |
bool |
1 |
unsigned char |
8 |
unsigned short |
16 |
unsigned |
16 |
unsigned long |
32 |
unsigned long long |
64 |
일반적인 상황에서는 이 정도로 충분하지만 구체적인 제약 사항이 있을 때는 이 정보만으로는 부족하거나 특정한 정밀도를 지정해야 할 수도 있다. 특히 부호 없는 값으로 최대 크기가 정해진 비트 집합을 표현할 때가 그렇다. 표현하려는 집합이 32비트만으로 충분하다면 플랫폼에 따라 unsigned나 unsigned long으로 표현하면 된다.
C 표준에서는 stdint.h를 통해 고정폭 정수 타입(exact-width integer type)을 제공한다. 이름에서 예상할 수 있듯이 ‘폭’을 구체적으로 지정한 것으로서, 제공되는 부호 없는 타입에 대해 정밀도가 동일하다.