TAKEAWAY 5.61 uintN_t 타입이 제공된다면 이는 폭과 정밀도가 정확히 N비트인 부호 없는 정수 타입이다.
TAKEAWAY 5.62 intN_t 타입이 제공된다면 이는 2의 보수로 표현하는 부호 있는 타입이며 폭은 정확히 N비트고 정밀도는 N-1이다.
이런 타입은 존재할 수 없지만, 2의 제곱을 쉽게 쓸 수 있도록 이런 속성을 제공하는 타입이 없다면 반드시 typedef로 제공해야 한다.
TAKEAWAY 5.63 필요한 속성을 제공하는 타입이 N = 8, 16, 32, 64에 대해 존재한다면 uintN_t와 intN_t 타입이 반드시 제공돼야 한다.
최근 플랫폼은 대부분 uint8_t, uint16_t, uint32_t, uint64_t와 같은 부호 없는 타입과 int8_t, int16_t, int32_t, int64_t와 같은 부호 있는 타입을 제공한다. 각 타입의 표현과 경계를 확인하려면 부호 없는 타입은 UINT8_MAX, …, UINT64_MAX 매크로를, 부호 있는 타입은 INT8_MIN, INT8_MAX, …, INT64_MIN과 INT64_MAX 매크로를 사용하면 된다.Exs 16
요청된 타입의 리터럴을 인코딩하려면 UINT8_C, …, UINT64_C, INT8_C, …, INT64_C 등과 같은 매크로를 사용하면 된다. 예를 들어 uint64_t가 unsigned long으로 정의된 플랫폼에서 INT64_C(1)을 펼치면 1UL이 된다.
Exs 16 이런 매크로가 제공되면 그 값은 타입 속성에 나와 있다. 이 값을 N에 대한 공식으로 표현해 보자.