Namespaces
Variants

Fixed width integer types (since C++11)

From cppreference.net
Utilities library

目次

定義済みヘッダー <cstdint>
int8_t int16_t int32_t int64_t
(オプション)
それぞれ正確に8、16、32、64ビットの幅を持つ符号付き整数型
パディングビットがなく、負の値には2の補数表現を使用
(実装が直接その型をサポートする場合にのみ提供)
(typedef)
int_fast8_t int_fast16_t int_fast32_t int_fast64_t
それぞれ少なくとも8、16、32、64ビットの幅を持つ最速の符号付き整数型
(typedef)
int_least8_t int_least16_t int_least32_t int_least64_t
それぞれ少なくとも8、16、32、64ビットの幅を持つ最小の符号付き整数型
(typedef)
intmax_t
最大幅の符号付き整数型
(typedef)
intptr_t
(オプション)
voidへのポインタを保持できる符号付き整数型
(typedef)
uint8_t uint16_t uint32_t uint64_t
(オプション)
それぞれ正確に8、16、32、64ビットの幅を持つ符号なし整数型
(実装が直接その型をサポートする場合にのみ提供)
(typedef)
uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t
それぞれ少なくとも8、16、32、64ビットの幅を持つ最速の符号なし整数型
(typedef)
uint_least8_t uint_least16_t uint_least32_t uint_least64_t
それぞれ少なくとも8、16、32、64ビットの幅を持つ最小の符号なし整数型
(typedef)
uintmax_t
最大幅の符号なし整数型
(typedef)
uintptr_t
(オプション)
voidへのポインタを保持できる符号なし整数型
(typedef)

実装は、 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名は、実装がそのビット幅の整数型をパディングなしでサポートする場合にのみ定義できる。 したがって、 std::uint24_t は正確に24ビットの幅を持つ符号なし整数型を表す。

以下の各マクロは、実装が対応するtypedef名を定義する場合にのみ定義されます。マクロ INT N _C および UINT N _C は、それぞれtypedef名 int_least N _t および uint_least N _t に対応します。

マクロ定数

ヘッダーで定義 <cstdint>
符号付き整数型:最小値
INT8_MIN INT16_MIN INT32_MIN INT64_MIN
(オプション)
std::int8_t std::int16_t std::int32_t std::int64_t の最小値
(マクロ定数)
INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN
std::int_fast8_t std::int_fast16_t std::int_fast32_t std::int_fast64_t の最小値
(マクロ定数)
INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN
std::int_least8_t std::int_least16_t std::int_least32_t std::int_least64_t の最小値
(マクロ定数)
INTPTR_MIN
(オプション)
std::intptr_t の最小値
(マクロ定数)
INTMAX_MIN
std::intmax_t の最小値
(マクロ定数)
符号付き整数型:最大値
INT8_MAX INT16_MAX INT32_MAX INT64_MAX
(オプション)
std::int8_t std::int16_t std::int32_t std::int64_t の最大値
(マクロ定数)
INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX
std::int_fast8_t std::int_fast16_t std::int_fast32_t std::int_fast64_t の最大値
(マクロ定数)
INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX
std::int_least8_t std::int_least16_t std::int_least32_t std::int_least64_t の最大値
(マクロ定数)
INTPTR_MAX
(オプション)
std::intptr_t の最大値
(マクロ定数)
INTMAX_MAX
std::intmax_t の最大値
(マクロ定数)
符号なし整数型:最大値
UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX
(オプション)
std::uint8_t std::uint16_t std::uint32_t std::uint64_t の最大値
(マクロ定数)
UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX
std::uint_fast8_t std::uint_fast16_t std::uint_fast32_t std::uint_fast64_t の最大値
(マクロ定数)
UINT_LEAST8_MAX UINT_LEAST16_MAX UINT_LEAST32_MAX UINT_LEAST64_MAX
std::uint_least8_t std::uint_least16_t std::uint_least32_t std::uint_least64_t の最大値
(マクロ定数)
UINTPTR_MAX
(オプション)
std::uintptr_t の最大値
(マクロ定数)
UINTMAX_MAX
std::uintmax_t の最大値
(マクロ定数)

最小幅整数定数用関数マクロ

INT8_C INT16_C INT32_C INT64_C
指定された値を持つ整数定数式に展開され、その型はそれぞれ プロモート された std::int_least8_t , std::int_least16_t , std::int_least32_t および std::int_least64_t の型となる
(関数マクロ)
INTMAX_C
指定された値を持ち、型 std::intmax_t の整数定数式に展開される
(関数マクロ)
UINT8_C UINT16_C UINT32_C UINT64_C
指定された値を持つ整数定数式に展開され、その型はそれぞれ プロモート された std::uint_least8_t , std::uint_least16_t , std::uint_least32_t および std::uint_least64_t の型となる
(関数マクロ)
UINTMAX_C
指定された値を持ち、型 std::uintmax_t の整数定数式に展開される
(関数マクロ)
#include <cstdint>
UINT64_C(0x123) // uint_least64_t型、値0x123のリテラルに展開される

フォーマットマクロ定数

ヘッダーで定義 <cinttypes>

std::fprintf関数ファミリーの std::fprintf フォーマット定数

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

int または
unsigned int に相当
説明 データ型マクロ




std::int x _t




std::int_least x _t
std::int_fast x _t
std::intmax_t
std::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

std::fscanf関数ファミリーの std::fscanf フォーマット定数

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

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




std::int x _t




std::int_least x _t
std::int_fast x _t
std::intmax_t
std::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++は文字列リテラルの直後の文字を ユーザー定義文字列リテラル として解釈するため、 printf ( "%" PRId64 " \n " ,n ) ; のようなCコードはC++では無効であり、 PRId64 の前にスペースが必要です。

C99規格では、C++実装は対応するマクロ __STDC_LIMIT_MACROS __STDC_CONSTANT_MACROS または __STDC_FORMAT_MACROS が(それぞれ)定義されていない限り、上記の制限、定数、またはフォーマットマクロを定義すべきではないと示唆されています。この推奨事項はどのC++規格にも採用されず、C11で削除されました。しかし、一部の実装(glibc 2.17など)はこの規則を適用しようとすることがあり、 __STDC マクロを定義する必要がある場合があります。C++コンパイラは、状況によって自動的にこれらを定義することで対処しようとする場合があります。

std::int8_t signed char である可能性があり、 std::uint8_t unsigned char である可能性があるが、その符号付き/符号なしに関わらず、どちらも char にはなりえない(なぜなら char は「符号付き整数型」または「符号なし整数型」と見なされないため)。

この例で使用されている 注意点 および フォーマットマクロ の前のスペースに関する注記も参照してください。

#include <cinttypes>
#include <cstdio>
int main()
{
    std::printf("%zu\n", sizeof(std::int64_t));
    std::printf("%s\n", PRId64);
    std::printf("%+" PRId64 "\n", INT64_MIN);
    std::printf("%+" PRId64 "\n", INT64_MAX);
    std::int64_t n = 7;
    std::printf("%+" PRId64 "\n", n);
}

出力例:

8
lld
-9223372036854775808
+9223372036854775807
+7

不具合報告

以下の動作変更に関する欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2820 C++11 optional typedef名とマクロの要件がC言語と矛盾していた 矛盾を解消

参考文献

  • C++23標準 (ISO/IEC 14882:2024):
  • 17.4.1 ヘッダ <cstdint> 概要 [cstdint.syn]
  • 31.13.2 ヘッダ <cinttypes> 概要 [cinttypes.syn]
  • C++20標準 (ISO/IEC 14882:2020):
  • 17.4 整数型 [cstdint]
  • 29.12.2 ヘッダ <cinttypes> 概要 [cinttypes.syn]
  • C++17標準 (ISO/IEC 14882:2017):
  • 21.4 整数型 [cstdint]
  • 30.11.2 ヘッダ<cinttypes>概要 [cinttypes.syn]
  • C++14規格 (ISO/IEC 14882:2014):
  • 18.4 整数型 [cstdint]
  • 27.9.2 Cライブラリファイル [c.files]
  • C++11標準 (ISO/IEC 14882:2011):
  • 18.4 整数型 [cstdint]
  • 27.9.2 Cライブラリファイル [c.files]

関連項目

C ドキュメント for 固定幅整数型