名前空間
変種
操作

固定幅整数型 (C99以降)

From cppreference.com
< C‎ |

目次

[編集]

ヘッダー <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 名 intN_tint_fastN_tint_leastN_tuintN_tuint_fastN_t、および uint_leastN_t を定義する場合があります。intN_t の形式の typedef 名は、実装がパディングなしでその幅の整数型をサポートしている場合にのみ定義できます。したがって、uint24_t は、正確に 24 ビットの幅を持つ符号なし整数型を意味します。

以下にリストされている各マクロは、実装が対応する typedef 名を定義している場合にのみ定義されます。マクロ INTN_C および UINTN_C は、それぞれ typedef 名 int_leastN_t および uint_leastN_t に対応します。

[編集] マクロ定数

ヘッダー <stdint.h> で定義
符号付き整数:幅
INT8_WIDTHINT16_WIDTHINT32_WIDTHINT64_WIDTH
(C23)(オプション)
それぞれ 8, 16, 32, 64 ビットの int8_tint16_tint32_tint64_t 型オブジェクトのビット幅
(マクロ定数)
INT_FAST8_WIDTHINT_FAST16_WIDTHINT_FAST32_WIDTHINT_FAST64_WIDTH
(C23)
int_fast8_tint_fast16_tint_fast32_tint_fast64_t 型オブジェクトのビット幅
(マクロ定数)
INT_LEAST8_WIDTHINT_LEAST16_WIDTHINT_LEAST32_WIDTHINT_LEAST64_WIDTH
(C23)
int_least8_tint_least16_tint_least32_tint_least64_t 型オブジェクトのビット幅
(マクロ定数)
INTPTR_WIDTH
(C23)(オプション)
intptr_t 型オブジェクトのビット幅
(マクロ定数)
INTMAX_WIDTH
(C23)
intmax_t 型オブジェクトのビット幅
(マクロ定数)
符号付き整数: 最小値
INT8_MININT16_MININT32_MININT64_MIN
それぞれ 8, 16, 32, 64 ビットの int8_tint16_tint32_tint64_t 型オブジェクトの最小値
(マクロ定数)
INT_FAST8_MININT_FAST16_MININT_FAST32_MININT_FAST64_MIN
int_fast8_tint_fast16_tint_fast32_tint_fast64_t 型オブジェクトの最小値
(マクロ定数)
INT_LEAST8_MININT_LEAST16_MININT_LEAST32_MININT_LEAST64_MIN
int_least8_tint_least16_tint_least32_tint_least64_t 型オブジェクトの最小値
(マクロ定数)
INTPTR_MIN
intptr_t 型オブジェクトの最小値
(マクロ定数)
INTMAX_MIN
intmax_t 型オブジェクトの最小値
(マクロ定数)
符号付き整数: 最大値
INT8_MAXINT16_MAXINT32_MAXINT64_MAX
それぞれ 8, 16, 32, 64 ビットの int8_tint16_tint32_tint64_t 型オブジェクトの最大値
(マクロ定数)
INT_FAST8_MAXINT_FAST16_MAXINT_FAST32_MAXINT_FAST64_MAX
int_fast8_tint_fast16_tint_fast32_tint_fast64_t 型オブジェクトの最大値
(マクロ定数)
INT_LEAST8_MAXINT_LEAST16_MAXINT_LEAST32_MAXINT_LEAST64_MAX
int_least8_tint_least16_tint_least32_tint_least64_t 型オブジェクトの最大値
(マクロ定数)
INTPTR_MAX
intptr_t 型オブジェクトの最大値
(マクロ定数)
INTMAX_MAX
intmax_t 型オブジェクトの最大値
(マクロ定数)
符号なし整数:幅
UINT8_WIDTHUINT16_WIDTHUINT32_WIDTHUINT64_WIDTH
(C23)(オプション)
それぞれ 8, 16, 32, 64 ビットの uint8_tuint16_tuint32_tuint64_t 型オブジェクトのビット幅
(マクロ定数)
UINT_FAST8_WIDTHUINT_FAST16_WIDTHUINT_FAST32_WIDTHUINT_FAST64_WIDTH
(C23)
uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_t 型オブジェクトのビット幅
(マクロ定数)
UINT_LEAST8_WIDTHUINT_LEAST16_WIDTHUINT_LEAST32_WIDTHUINT_LEAST64_WIDTH
(C23)
uint_least8_tuint_least16_tuint_least32_tuint_least64_t 型オブジェクトのビット幅
(マクロ定数)
UINTPTR_WIDTH
(C23)(オプション)
uintptr_t 型オブジェクトのビット幅
(マクロ定数)
UINTMAX_WIDTH
(C23)
uintmax_t 型オブジェクトのビット幅
(マクロ定数)
符号なし整数: 最大値
UINT8_MAXUINT16_MAXUINT32_MAXUINT64_MAX
それぞれ 8, 16, 32, 64 ビットの uint8_tuint16_tuint32_tuint64_t 型オブジェクトの最大値
(マクロ定数)
UINT_FAST8_MAXUINT_FAST16_MAXUINT_FAST32_MAXUINT_FAST64_MAX
uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_t 型オブジェクトの最大値
(マクロ定数)
UINT_LEAST8_MAXUINT_LEAST16_MAXUINT_LEAST32_MAXUINT_LEAST64_MAX
uint_least8_tuint_least16_tuint_least32_tuint_least64_t 型オブジェクトの最大値
(マクロ定数)
UINTPTR_MAX
uintptr_t 型オブジェクトの最大値
(マクロ定数)
UINTMAX_MAX
uintmax_t 型オブジェクトの最大値
(マクロ定数)

[編集] 最小幅整数定数のための関数マクロ

INT8_CINT16_CINT32_CINT64_C
引数で指定された値と、それぞれ int_least8_tint_least16_tint_least32_tint_least64_t の型を持つ整数定数式に展開されます。
(関数マクロ)
INTMAX_C
引数で指定された値と intmax_t の型を持つ整数定数式に展開されます。
(関数マクロ)
UINT8_CUINT16_CUINT32_CUINT64_C
引数で指定された値と、それぞれ uint_least8_tuint_least16_tuint_least32_tuint_least64_t の型を持つ整数定数式に展開されます。
(関数マクロ)
UINTMAX_C
引数で指定された値と uintmax_t の型を持つ整数定数式に展開されます。
(関数マクロ)
#include <stdint.h>
UINT64_C(0x123) // might expand to 0x123ULL or 0x123UL

[編集] フォーマットマクロ定数

ヘッダ <inttypes.h> で定義

[編集] fprintfファミリーの関数用のフォーマット定数

ここにリストされている各 PRI マクロは、実装が対応する typedef 名を定義している場合にのみ定義されます。

同等
int または
unsigned int
説明 データ型用マクロ




[u]intx_t




[u]int_leastx_t
[u]int_fastx_t
[u]intmax_t
[u]intptr_t
d 符号付き10進整数値の出力 PRIdx PRIdLEASTx PRIdFASTx PRIdMAX PRIdPTR
i PRIix PRIiLEASTx PRIiFASTx PRIiMAX PRIiPTR
u 符号なし10進整数値の出力 PRIux PRIuLEASTx PRIuFASTx PRIuMAX PRIuPTR
o 符号なし8進整数値の出力 PRIox PRIoLEASTx PRIoFASTx PRIoMAX PRIoPTR
x 符号なし小文字16進整数値の出力 PRIxx PRIxLEASTx PRIxFASTx PRIxMAX PRIxPTR
X 符号なし大文字16進整数値の出力 PRIXx PRIXLEASTx PRIXFASTx PRIXMAX PRIXPTR

[編集] fscanfファミリーの関数用のフォーマット定数

ここにリストされている各 SCN マクロは、実装が対応する typedef 名を定義しており、かつその型に適した fscanf の長さ修飾子を持っている場合にのみ定義されます。

同等
int または
unsigned int
説明 データ型用マクロ




[u]intx_t




[u]int_leastx_t
[u]int_fastx_t
[u]intmax_t
[u]intptr_t
d 符号付き10進整数値の入力 SCNdx SCNdLEASTx SCNdFASTx SCNdMAX SCNdPTR
i 符号付き整数値の入力(基数は解析された最初の文字によって決まります) SCNix SCNiLEASTx SCNiFASTx SCNiMAX SCNiPTR
u 符号なし10進整数値の入力 SCNux SCNuLEASTx SCNuFASTx SCNuMAX SCNuPTR
o 符号なし8進整数値の入力 SCNox SCNoLEASTx SCNoFASTx SCNoMAX SCNoPTR
x 符号なし16進整数値の入力 SCNxx SCNxLEASTx SCNxFASTx 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++ドキュメント 固定幅整数型
English 日本語 中文(简体) 中文(繁體)