名前空間
変種
操作

固定幅の整数型 (C++11およびそれ以降)

提供: cppreference.com
< cpp‎ | types
 
 
 
型サポート
基本的な型
基本型
固定幅の整数型 (C++11)
数値の限界
C の数値限界インタフェース
実行時型情報
型特性
型カテゴリ
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
型プロトタイプ
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(C++20以前)
(C++11)(C++20で非推奨)
(C++11)
型特性定数
メタ関数
(C++17)
エンディアン
(C++20)
サポートされている操作
関係と性質の問い合わせ
(C++11)
(C++11)
型変更
(C++11)(C++11)(C++11)
型変換
(C++11)
(C++11)
(C++17)
(C++11)(C++20以前)(C++17)
 

目次

[編集]

ヘッダ <cstdint> で定義
int8_tint16_tint32_tint64_t
(オプション)
ちょうど 8, 16, 32, 64 ビットの幅を持つ、パディングのない、負の値に2の補数を使用する、符号付き整数型 (処理系がそのような型を直接サポートする場合のみ提供されます)
(typedef) [edit]
int_fast8_tint_fast16_tint_fast32_tint_fast64_t
少なくとも 8, 16, 32, 64 ビットの幅を持つ最も高速な符号付き整数型
(typedef) [edit]
int_least8_tint_least16_tint_least32_tint_least64_t
少なくとも 8, 16, 32, 64 ビットの幅を持つ最も小さな符号付き整数型
(typedef) [edit]
intmax_t
最も大きな幅の整数型
(typedef) [edit]
intptr_t
(オプション)
ポインタを保持できる符号付き整数型
(typedef) [edit]
uint8_tuint16_tuint32_tuint64_t
(オプション)
ちょうど 8, 16, 32, 64 ビットの幅を持つ符号なし整数型 (処理系がそのような型を直接サポートする場合のみ提供されます)
(typedef) [edit]
uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_t
少なくとも 8, 16, 32, 64 ビットの幅を持つ最も高速な符号なし整数型
(typedef) [edit]
uint_least8_tuint_least16_tuint_least32_tuint_least64_t
少なくとも 8, 16, 32, 64 ビットの幅を持つ最も小さな符号なし整数型
(typedef) [edit]
uintmax_t
最も大きな幅の符号なし整数型
(typedef) [edit]
uintptr_t
(オプション)
ポインタを保持できる符号なし整数型
(typedef) [edit]

[編集] マクロ定数

ヘッダ <cstdint> で定義
符号付き整数 : 最小値
INT8_MININT16_MININT32_MININT64_MIN
int8_t, int16_t, int32_t, int64_t 型のオブジェクトの最小値
(マクロ定数) [edit]
INT_FAST8_MININT_FAST16_MININT_FAST32_MININT_FAST64_MIN
int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t型のオブジェクトの最小値
(マクロ定数) [edit]
INT_LEAST8_MININT_LEAST16_MININT_LEAST32_MININT_LEAST64_MIN
int_least8_t, int_least16_t, int_least32_t, int_least64_t 型のオブジェクトの最小値
(マクロ定数) [edit]
INTPTR_MIN
intptr_t 型のオブジェクトの最小値
(マクロ定数) [edit]
INTMAX_MIN
intmax_t 型のオブジェクトの最小値
(マクロ定数) [edit]
符号付き整数 : 最大値
INT8_MAXINT16_MAXINT32_MAXINT64_MAX
int8_t, int16_t, int32_t, int64_t 型のオブジェクトの最大値
(マクロ定数) [edit]
INT_FAST8_MAXINT_FAST16_MAXINT_FAST32_MAXINT_FAST64_MAX
int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t 型のオブジェクトの最大値
(マクロ定数) [edit]
INT_LEAST8_MAXINT_LEAST16_MAXINT_LEAST32_MAXINT_LEAST64_MAX
int_least8_t, int_least16_t, int_least32_t, int_least64_t 型のオブジェクトの最大値
(マクロ定数) [edit]
INTPTR_MAX
intptr_t 型のオブジェクトの最大値
(マクロ定数) [edit]
INTMAX_MAX
intmax_t 型のオブジェクトの最大値
(マクロ定数) [edit]
符号なし整数 : 最大値
UINT8_MAXUINT16_MAXUINT32_MAXUINT64_MAX
uint8_t, uint16_t, uint32_t, uint64_t 型のオブジェクトの最大値
(マクロ定数) [edit]
UINT_FAST8_MAXUINT_FAST16_MAXUINT_FAST32_MAXUINT_FAST64_MAX
uint_fast8_t, uint_fast16_t, uint_fast32_t, uint_fast64_t 型のオブジェクトの最大値
(マクロ定数) [edit]
UINT_LEAST8_MAXUINT_LEAST16_MAXUINT_LEAST32_MAXUINT_LEAST64_MAX
uint_least8_t, uint_least16_t, uint_least32_t, uint_least64_t 型のオブジェクトの最大値
(マクロ定数) [edit]
UINTPTR_MAX
uintptr_t 型のオブジェクトの最大値
(マクロ定数) [edit]
UINTMAX_MAX
uintmax_t 型のオブジェクトの最大値
(マクロ定数) [edit]

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

INT8_CINT16_CINT32_CINT64_C
引数で指定された値を持つ int_least8_t, int_least16_t, int_least32_t, int_least64_t 型の整数定数式に展開されます
(関数マクロ) [edit]
INTMAX_C
引数で指定された値を持つ intmax_t 型の整数定数式に展開されます
(関数マクロ) [edit]
UINT8_CUINT16_CUINT32_CUINT64_C
引数で指定された値を持つ uint_least8_t, uint_least16_t, uint_least32_t, uint_least64_t 型の整数定数式に展開されます
(関数マクロ) [edit]
UINTMAX_C
引数で指定された値を持つ uintmax_t 型の整数定数式に展開されます
(関数マクロ) [edit]
#include <cstdint>
UINT64_C(0x123) // expands to a literal of type uint64_t and value 0x123

[編集] 書式マクロ定数

ヘッダ <cinttypes> で定義

[編集] std::fprintf ファミリーの関数のための書式定数

int または
unsigned int 用の
対応する指定子
説明 データ型用のマクロ




std::intx_t




std::int_leastx_t
std::int_fastx_t
std::intmax_t
std::intptr_t
x = 8, 16, 32 または 64
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 ファミリーの関数のための書式定数

int または
unsigned int 用の
対応する指定子
説明 データ型用のマクロ




std::intx_t




std::int_leastx_t
std::int_fastx_t
std::intmax_t
std::intptr_t
x = 8, 16, 32 または 64
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++ では無効であり、 PRId64 の前に空白が要求されます。

関係する C のヘッダ (stdint.h または inttypes.h) をインクルードする前にマクロ __STDC_LIMIT_MACROS__STDC_CONSTANT_MACROS__STDC_FORMAT_MACROS が定義されない限り、 C++ 処理系はそれぞれ上記の限界、定数、書式マクロを定義するべきでない、と C99 標準は提案していました。 これは C++ 標準には採択されず、 C11 で削除されました。 しかし、いくつかの実装 (glibc 2.17 など) はこのルールを適用しようとしており、 __STDC マクロを定義する必要があるかもしれません。 C++ コンパイラはいくつかの状況においてこれらを自動的に定義することによるワークアラウンドを試みるかもしれません。

[編集]

#include <cstdio>
#include <cinttypes>
 
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言語リファレンス