Namespaces
Variants

Fixed width integer types (since C99)

From cppreference.net
< c ‎ | types

목차

타입

헤더 파일에 정의됨 <stdint.h>
int8_t
int16_t
int32_t
int64_t
각각 정확히 8, 16, 32, 64비트 너비를 가지는 부호 있는 정수 타입
패딩 비트 없이 2의 보수법으로 음수 표현
(구현에서 해당 타입을 직접 지원하는 경우에만 제공됨)
int_fast8_t
int_fast16_t
int_fast32_t
int_fast64_t
각각 최소 8, 16, 32, 64비트 너비를 가지는 가장 빠른 부호 있는 정수 타입
int_least8_t
int_least16_t
int_least32_t
int_least64_t
각각 최소 8, 16, 32, 64비트 너비를 가지는 가장 작은 부호 있는 정수 타입
intmax_t 최대 너비 정수 타입
intptr_t 포인터를 저장할 수 있는 정수 타입
uint8_t
uint16_t
uint32_t
uint64_t
각각 정확히 8, 16, 32, 64비트 너비를 가지는 부호 없는 정수 타입
(구현에서 해당 타입을 직접 지원하는 경우에만 제공됨)
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
각각 최소 8, 16, 32, 64비트 너비를 가지는 가장 빠른 부호 없는 정수 타입
uint_least8_t
uint_least16_t
uint_least32_t
uint_least64_t
각각 최소 8, 16, 32, 64비트 너비를 가지는 가장 작은 부호 없는 정수 타입
uintmax_t 최대 너비 부호 없는 정수 타입
uintptr_t 포인터를 저장할 수 있는 부호 없는 정수 타입

구현체는 int N _t , int_fast N _t , int_least N _t , uint N _t , uint_fast N _t , 그리고 uint_least N _t 와 같은 typedef 이름을 N 이 8, 16, 32 또는 64가 아닐 때 정의할 수 있습니다. int N _t 형태의 typedef 이름은 구현체가 패딩 없이 해당 너비의 정수 타입을 지원할 때만 정의될 수 있습니다. 따라서 uint24_t 는 정확히 24비트 너비의 부호 없는 정수 타입을 나타냅니다.

아래에 나열된 각 매크로는 구현이 해당 typedef 이름을 정의하는 경우에만 정의됩니다. 매크로 INT N _C UINT N _C 는 각각 typedef 이름 int_least N _t uint_least N _t 에 대응됩니다.

매크로 상수

헤더 파일에 정의됨 <stdint.h>
부호 있는 정수 : 너비
INT8_WIDTH INT16_WIDTH INT32_WIDTH INT64_WIDTH
(C23) (optional)
int8_t , int16_t , int32_t , int64_t 타입 객체의 비트 폭 (정확히 8, 16, 32, 64)
(매크로 상수)
INT_FAST8_WIDTH INT_FAST16_WIDTH INT_FAST32_WIDTH INT_FAST64_WIDTH
(C23)
int_fast8_t , int_fast16_t , int_fast32_t , int_fast64_t 타입 객체의 비트 너비
(매크로 상수)
INT_LEAST8_WIDTH INT_LEAST16_WIDTH INT_LEAST32_WIDTH INT_LEAST64_WIDTH
(C23)
int_least8_t , int_least16_t , int_least32_t , int_least64_t 형식의 객체 비트 너비
(매크로 상수)
INTPTR_WIDTH
(C23) (optional)
intptr_t 타입 객체의 비트 너비
(매크로 상수)
INTMAX_WIDTH
(C23)
intmax_t 타입 객체의 비트 너비
(매크로 상수)
부호 있는 정수 : 최솟값
INT8_MIN INT16_MIN INT32_MIN INT64_MIN
int8_t , int16_t , int32_t , int64_t 타입 객체의 최소값
(매크로 상수)
INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN
int_fast8_t , int_fast16_t , int_fast32_t , int_fast64_t 타입 객체의 최소값
(매크로 상수)
INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN
int_least8_t , int_least16_t , int_least32_t , int_least64_t 타입 객체의 최소값
(매크로 상수)
INTPTR_MIN
intptr_t 타입 객체의 최소값
(매크로 상수)
INTMAX_MIN
intmax_t 타입 객체의 최소값
(매크로 상수)
부호 있는 정수 : 최댓값
INT8_MAX INT16_MAX INT32_MAX INT64_MAX
int8_t , int16_t , int32_t , int64_t 타입 객체의 최댓값
(매크로 상수)
INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX
int_fast8_t , int_fast16_t , int_fast32_t , int_fast64_t 타입 객체의 최댓값
(매크로 상수)
INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX
int_least8_t , int_least16_t , int_least32_t , int_least64_t 형식 객체의 최대값
(매크로 상수)
INTPTR_MAX
intptr_t 타입 객체의 최댓값
(매크로 상수)
INTMAX_MAX
intmax_t 타입 객체의 최댓값
(매크로 상수)
부호 없는 정수 : 너비
UINT8_WIDTH UINT16_WIDTH UINT32_WIDTH UINT64_WIDTH
(C23) (optional)
uint8_t , uint16_t , uint32_t , uint64_t 타입 객체의 비트 폭 (정확히 8, 16, 32, 64)
(매크로 상수)
UINT_FAST8_WIDTH UINT_FAST16_WIDTH UINT_FAST32_WIDTH UINT_FAST64_WIDTH
(C23)
uint_fast8_t , uint_fast16_t , uint_fast32_t , uint_fast64_t 타입 객체의 비트 너비
(매크로 상수)
UINT_LEAST8_WIDTH UINT_LEAST16_WIDTH UINT_LEAST32_WIDTH UINT_LEAST64_WIDTH
(C23)
uint_least8_t , uint_least16_t , uint_least32_t , uint_least64_t 타입 객체의 비트 너비
(매크로 상수)
UINTPTR_WIDTH
(C23) (optional)
uintptr_t 타입 객체의 비트 너비
(매크로 상수)
UINTMAX_WIDTH
(C23)
uintmax_t 타입 객체의 비트 너비
(매크로 상수)
부호 없는 정수 : 최댓값
UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX
uint8_t , uint16_t , uint32_t , uint64_t 타입 객체의 최대값
(매크로 상수)
UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX
uint_fast8_t , uint_fast16_t , uint_fast32_t , uint_fast64_t 타입 객체의 최댓값
(매크로 상수)
UINT_LEAST8_MAX UINT_LEAST16_MAX UINT_LEAST32_MAX UINT_LEAST64_MAX
uint_least8_t , uint_least16_t , uint_least32_t , uint_least64_t 타입 객체의 최댓값
(매크로 상수)
UINTPTR_MAX
uintptr_t 타입 객체의 최댓값
(매크로 상수)
UINTMAX_MAX
uintmax_t 타입 객체의 최댓값
(매크로 상수)

최소 너비 정수 상수를 위한 함수 매크로

INT8_C INT16_C INT32_C INT64_C
인수로 지정된 값을 가지며 각각 int_least8_t , int_least16_t , int_least32_t , int_least64_t 타입을 갖는 정수 상수 표현식으로 확장됨
(함수 매크로)
INTMAX_C
인수로 지정된 값을 가지며 intmax_t 타입을 갖는 정수 상수 표현식으로 확장됨
(함수 매크로)
UINT8_C UINT16_C UINT32_C UINT64_C
인수로 지정된 값을 가지며 각각 uint_least8_t , uint_least16_t , uint_least32_t , uint_least64_t 타입을 갖는 정수 상수 표현식으로 확장됨
(함수 매크로)
UINTMAX_C
인수로 지정된 값을 가지며 uintmax_t 타입을 갖는 정수 상수 표현식으로 확장됨
(함수 매크로)
#include <stdint.h>
UINT64_C(0x123) // 0x123ULL 또는 0x123UL로 확장될 수 있음

형식 매크로 상수

헤더 파일에 정의됨 <inttypes.h>

fprintf 함수군을 위한 fprintf 형식 상수

여기에 나열된 각 PRI 매크로는 구현이 해당 typedef 이름을 정의하는 경우에만 정의됩니다.

int 또는
unsigned int 에 대한
동등 표현
설명 자료형 매크로




[u]int x _t




[u]int_least x _t
[u]int_fast x _t
[u]intmax_t
[u]intptr_t
d 부호 있는 10진 정수 값 출력 PRId x PRIdLEAST x PRIdFAST x PRIdMAX PRIdPTR
i PRIi x PRIiLEAST x PRIiFAST x PRIiMAX PRIiPTR
u 부호 없는 10진 정수 값 출력 PRIu x PRIuLEAST x PRIuFAST x PRIuMAX PRIuPTR
o 부호 없는 8진 정수 값 출력 PRIo x PRIoLEAST x PRIoFAST x PRIoMAX PRIoPTR
x 부호 없는 소문자 16진 정수 값 출력 PRIx x PRIxLEAST x PRIxFAST x PRIxMAX PRIxPTR
X 부호 없는 대문자 16진 정수 값 출력 PRIX x PRIXLEAST x PRIXFAST x PRIXMAX PRIXPTR

fscanf 함수 계열을 위한 형식 상수

여기에 나열된 각 SCN 매크로는 구현이 해당 typedef 이름을 정의하고 해당 타입에 적합한 fscanf 길이 수식자를 가질 경우에만 정의됩니다.

int 또는
unsigned int 에 대한
동등 매크로
설명 데이터 타입 매크로




[u]int x _t




[u]int_least x _t
[u]int_fast x _t
[u]intmax_t
[u]intptr_t
d 부호 있는 10진 정수 값 입력 SCNd x SCNdLEAST x SCNdFAST x SCNdMAX SCNdPTR
i 부호 있는 정수 값 입력 (진법은 파싱된 첫 문자에 의해 결정됨) SCNi x SCNiLEAST x SCNiFAST x SCNiMAX SCNiPTR
u 부호 없는 10진 정수 값 입력 SCNu x SCNuLEAST x SCNuFAST x SCNuMAX SCNuPTR
o 부호 없는 8진 정수 값 입력 SCNo x SCNoLEAST x SCNoFAST x SCNoMAX SCNoPTR
x 부호 없는 16진 정수 값 입력 SCNx x SCNxLEAST x SCNxFAST x SCNxMAX SCNxPTR

예제

참고: C++ 호환성 참고 사항 (이 예제에서 사용된 형식 매크로 앞의 공백에 관한 내용)

#include <inttypes.h>
#include <stdio.h>
int main(void)
{
    printf("%zu\n", sizeof(int64_t));
    printf("%s\n", PRId64);
    printf("%+" PRId64 "\n", INT64_MIN);
    printf("%+" PRId64 "\n", INT64_MAX);
    int64_t n = 7;
    printf("%+" PRId64 "\n", n);
}

가능한 출력:

8
lld
-9223372036854775808
+9223372036854775807
+7

참고문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 7.8.1 형식 지정자용 매크로 (p: TBD)
  • 7.18 정수형 <stdint.h> (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.8.1 형식 지정자 매크로 (p: 158-159)
  • 7.18 정수형 <stdint.h> (p: 212-216)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.8.1 형식 지정자 매크로 (p: 217-218)
  • 7.18 정수형 타입 <stdint.h> (p: 289-295)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.8.1 형식 지정자 매크로 (p: 198-199)
  • 7.18 정수형 <stdint.h> (p: 255-261)

참고 항목

C++ documentation for Fixed width integer types
C++ documentation for User-defined literals ( formatting macros note )