더북(TheBook)

5.7.6 고정폭 정수 타입

지금까지 소개한 정수 타입의 정밀도는 limits.h에 정의된 UINT_MAXLONG_MIN과 같은 매크로를 이용하여 간접적으로 검사할 수 있다. C 표준에서는 이런 타입에 대해 최소한의 정밀도만 제공한다. 부호 없는 타입에 대한 최소 정밀도(minimal precision)는 다음과 같다.

▼ 표 5-8 부호 없는 타입에 대한 최소 정밀도

타입

최소 정밀도

bool

1

unsigned char

8

unsigned short

16

unsigned

16

unsigned long

32

unsigned long long

64

일반적인 상황에서는 이 정도로 충분하지만 구체적인 제약 사항이 있을 때는 이 정보만으로는 부족하거나 특정한 정밀도를 지정해야 할 수도 있다. 특히 부호 없는 값으로 최대 크기가 정해진 비트 집합을 표현할 때가 그렇다. 표현하려는 집합이 32비트만으로 충분하다면 플랫폼에 따라 unsignedunsigned long으로 표현하면 된다.

C 표준에서는 stdint.h를 통해 고정폭 정수 타입(exact-width integer type)을 제공한다. 이름에서 예상할 수 있듯이 ‘폭’을 구체적으로 지정한 것으로서, 제공되는 부호 없는 타입에 대해 정밀도가 동일하다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.