名前空間
変種
操作

固定幅整数型 (C++11以降)

From cppreference.com
< cpp‎ | types
 
 
ユーティリティライブラリ
言語サポート
型のサポート (基本型、RTTI)
ライブラリ機能検査マクロ (C++20)
プログラムユーティリティ
可変引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

汎用ユーティリティ
関係演算子 (C++20で非推奨)
 
 

目次

[編集]

ヘッダ <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_tint_fastN_tint_leastN_tuintN_tuint_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_tstd::int16_tstd::int32_t、および std::int64_t の最小値
(マクロ定数) [編集]
INT_FAST8_MININT_FAST16_MININT_FAST32_MININT_FAST64_MIN
それぞれ std::int_fast8_tstd::int_fast16_tstd::int_fast32_t、および std::int_fast64_t の最小値
(マクロ定数) [編集]
INT_LEAST8_MININT_LEAST16_MININT_LEAST32_MININT_LEAST64_MIN
それぞれ std::int_least8_tstd::int_least16_tstd::int_least32_t、および std::int_least64_t の最小値
(マクロ定数) [編集]
INTPTR_MIN
(オプション)
std::intptr_t の最小値
(マクロ定数) [編集]
INTMAX_MIN
std::intmax_t の最小値
(マクロ定数) [編集]
符号付き整数: 最大値
INT8_MAXINT16_MAXINT32_MAXINT64_MAX
(オプション)
それぞれ std::int8_tstd::int16_tstd::int32_t、および std::int64_t の最大値
(マクロ定数) [編集]
INT_FAST8_MAXINT_FAST16_MAXINT_FAST32_MAXINT_FAST64_MAX
それぞれ std::int_fast8_tstd::int_fast16_tstd::int_fast32_t、および std::int_fast64_t の最大値
(マクロ定数) [編集]
INT_LEAST8_MAXINT_LEAST16_MAXINT_LEAST32_MAXINT_LEAST64_MAX
それぞれ std::int_least8_tstd::int_least16_tstd::int_least32_t、および std::int_least64_t の最大値
(マクロ定数) [編集]
INTPTR_MAX
(オプション)
std::intptr_t の最大値
(マクロ定数) [編集]
INTMAX_MAX
std::intmax_t の最大値
(マクロ定数) [編集]
符号なし整数: 最大値
UINT8_MAXUINT16_MAXUINT32_MAXUINT64_MAX
(オプション)
それぞれ std::uint8_tstd::uint16_tstd::uint32_t、および std::uint64_t の最大値
(マクロ定数) [編集]
UINT_FAST8_MAXUINT_FAST16_MAXUINT_FAST32_MAXUINT_FAST64_MAX
それぞれ std::uint_fast8_tstd::uint_fast16_tstd::uint_fast32_t、および std::uint_fast64_t の最大値
(マクロ定数) [編集]
UINT_LEAST8_MAXUINT_LEAST16_MAXUINT_LEAST32_MAXUINT_LEAST64_MAX
それぞれ std::uint_least8_tstd::uint_least16_tstd::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_tstd::int_least16_tstd::int_least32_t、および std::int_least64_t昇格された型となる
(関数マクロ) [編集]
INTMAX_C
引数で指定された値と型 std::intmax_t を持つ整数定数式に展開される
(関数マクロ) [編集]
UINT8_CUINT16_CUINT32_CUINT64_C
引数で指定された値を持つ整数定数式に展開され、その型はそれぞれ std::uint_least8_tstd::uint_least16_tstd::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_tsigned char であってもよく、std::uint8_tunsigned 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ドキュメント (固定幅整数型)
English 日本語 中文(简体) 中文(繁體)