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 ポインタを保持できる符号なし整数型

実装は、 N が8、16、32、64でない場合に、typedef名 int N _t int_fast N _t int_least N _t uint N _t uint_fast N _t 、 および uint_least N _t を定義してもよい。 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) (オプション)
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) (オプション)
intptr_t型のオブジェクトのビット幅 intptr_t
(マクロ定数)
INTMAX_WIDTH
(C23)
intmax_t型のオブジェクトのビット幅 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型のオブジェクトの最小値 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型のオブジェクトの最大値 intmax_t
(マクロ定数)
符号なし整数 : ビット幅
UINT8_WIDTH UINT16_WIDTH UINT32_WIDTH UINT64_WIDTH
(C23) (オプション)
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型のオブジェクトのビット幅 uintptr_t
(マクロ定数)
UINTMAX_WIDTH
(C23)
uintmax_t型のオブジェクトのビット幅 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型のオブジェクトの最大値 uintptr_t
(マクロ定数)
UINTMAX_MAX
uintmax_t型のオブジェクトの最大値 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関数ファミリーの 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 standard (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 )