Fixed width integer types (since C++11)
目次 |
型
|
定義済みヘッダー
<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
固定幅整数型
|