固定幅整数型 (C++11以降)
目次 |
[編集] 型
| ヘッダ
<cstdint> で定義されている | |
| int8_tint16_tint32_tint64_t (オプション) |
それぞれ幅が正確に8、16、32、64ビットの符号付き整数型 パディングビットなしで、負の値には2の補数を使用 (実装が直接その型をサポートする場合にのみ提供される) (typedef) |
| int_fast8_tint_fast16_tint_fast32_tint_fast64_t |
それぞれ幅が少なくとも8、16、32、64ビットの最速の符号付き整数型 (typedef) |
| int_least8_tint_least16_tint_least32_tint_least64_t |
それぞれ幅が少なくとも8、16、32、64ビットの最小の符号付き整数型 (typedef) |
| intmax_t |
最大幅の符号付き整数型 (typedef) |
| intptr_t (オプション) |
void へのポインタを保持できる符号付き整数型(typedef) |
| uint8_tuint16_tuint32_tuint64_t (オプション) |
それぞれ幅が正確に8、16、32、64ビットの符号なし整数型 (実装が直接その型をサポートする場合にのみ提供される) (typedef) |
| uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_t |
それぞれ幅が少なくとも8、16、32、64ビットの最速の符号なし整数型 (typedef) |
| uint_least8_tuint_least16_tuint_least32_tuint_least64_t |
それぞれ幅が少なくとも8、16、32、64ビットの最小の符号なし整数型 (typedef) |
| uintmax_t |
最大幅の符号なし整数型 (typedef) |
| uintptr_t (オプション) |
void へのポインタを保持できる符号なし整数型(typedef) |
実装は、Nが8、16、32、64でない場合に、typedef名 intN_t、int_fastN_t、int_leastN_t、uintN_t、uint_fastN_t、およびuint_leastN_t を定義することができます。intN_t の形式のtypedef名は、実装がパディングなしでその幅の整数型をサポートする場合にのみ定義できます。したがって、std::uint24_t は幅が正確に24ビットの符号なし整数型を表します。
以下にリストされている各マクロは、実装が対応するtypedef名を定義している場合にのみ定義されます。マクロ INTN_C および UINTN_C は、それぞれtypedef名 int_leastN_t および uint_leastN_t に対応します。
[編集] マクロ定数
| ヘッダ
<cstdint> で定義されている | |
符号付き整数: 最小値 | |
| INT8_MININT16_MININT32_MININT64_MIN (オプション) |
それぞれ std::int8_t、std::int16_t、std::int32_t、および std::int64_t の最小値(マクロ定数) |
| INT_FAST8_MININT_FAST16_MININT_FAST32_MININT_FAST64_MIN |
それぞれ std::int_fast8_t、std::int_fast16_t、std::int_fast32_t、および std::int_fast64_t の最小値(マクロ定数) |
| INT_LEAST8_MININT_LEAST16_MININT_LEAST32_MININT_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_MAXINT16_MAXINT32_MAXINT64_MAX (オプション) |
それぞれ std::int8_t、std::int16_t、std::int32_t、および std::int64_t の最大値(マクロ定数) |
| INT_FAST8_MAXINT_FAST16_MAXINT_FAST32_MAXINT_FAST64_MAX |
それぞれ std::int_fast8_t、std::int_fast16_t、std::int_fast32_t、および std::int_fast64_t の最大値(マクロ定数) |
| INT_LEAST8_MAXINT_LEAST16_MAXINT_LEAST32_MAXINT_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_MAXUINT16_MAXUINT32_MAXUINT64_MAX (オプション) |
それぞれ std::uint8_t、std::uint16_t、std::uint32_t、および std::uint64_t の最大値(マクロ定数) |
| UINT_FAST8_MAXUINT_FAST16_MAXUINT_FAST32_MAXUINT_FAST64_MAX |
それぞれ std::uint_fast8_t、std::uint_fast16_t、std::uint_fast32_t、および std::uint_fast64_t の最大値(マクロ定数) |
| UINT_LEAST8_MAXUINT_LEAST16_MAXUINT_LEAST32_MAXUINT_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_CINT16_CINT32_CINT64_C |
引数で指定された値を持つ整数定数式に展開され、その型はそれぞれ std::int_least8_t、std::int_least16_t、std::int_least32_t、および std::int_least64_t の昇格された型となる(関数マクロ) |
| INTMAX_C |
引数で指定された値と型 std::intmax_t を持つ整数定数式に展開される(関数マクロ) |
| UINT8_CUINT16_CUINT32_CUINT64_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) // expands to a literal of type uint_least64_t and value 0x123
[編集] 書式マクロ定数
| ヘッダー
<cinttypes> で定義 |
[編集] std::fprintf 関数群の書式定数
ここにリストされている各 PRI マクロは、実装が対応するtypedef名を定義している場合にのみ定義されます。
同等int またはunsigned int |
説明 | データ型用マクロ | ||||
|---|---|---|---|---|---|---|
std::intx_t |
std::int_leastx_t |
std::int_fastx_t |
std::intmax_t |
std::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 |
[編集] std::fscanf 関数群の書式定数
ここにリストされている各 SCN マクロは、実装が対応するtypedef名を定義し、その型に適した std::fscanf 長さ修飾子を持つ場合にのみ定義されます。
同等int またはunsigned int |
説明 | データ型用マクロ | ||||
|---|---|---|---|---|---|---|
std::intx_t |
std::int_leastx_t |
std::int_fastx_t |
std::intmax_t |
std::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++は文字列リテラルの直後の文字をユーザー定義文字列リテラルとして解釈するため、printf("%"PRId64"\n",n); のようなCコードは無効なC++であり、PRId64 の前にスペースが必要です。
C99標準では、関連するCヘッダ (stdint.h または inttypes.h) をインクルードする前に、マクロ __STDC_LIMIT_MACROS、__STDC_CONSTANT_MACROS、または __STDC_FORMAT_MACROS (それぞれ) が定義されていない限り、C++実装は上記の制限、定数、または書式マクロを定義すべきではないと提案しています。この推奨事項はいずれの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 | オプションのtypedef名とマクロの要件がCと矛盾していた | 整合性が取れた |
[編集] 参照
- C++23標準 (ISO/IEC 14882:2024)
- 17.4.1 ヘッダ <cstdint> シノプシス [cstdint.syn]
- 31.13.2 ヘッダ <cinttypes> シノプシス [cinttypes.syn]
- C++20 standard (ISO/IEC 14882:2020)
- 17.4 整数型 [cstdint]
- 29.12.2 ヘッダ <cinttypes> シノプシス [cinttypes.syn]
- C++17 standard (ISO/IEC 14882:2017)
- 21.4 整数型 [cstdint]
- 30.11.2 ヘッダ <cinttypes> シノプシス [cinttypes.syn]
- C++14 standard (ISO/IEC 14882:2014)
- 18.4 整数型 [cstdint]
- 27.9.2 Cライブラリファイル [c.files]
- C++11 standard (ISO/IEC 14882:2011)
- 18.4 整数型 [cstdint]
- 27.9.2 Cライブラリファイル [c.files]
[編集] 関連項目
| Cドキュメント (固定幅整数型)
|