固定幅の整数型 (C++11以上)
提供: cppreference.com
目次 |
[編集]型
ヘッダ <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 (オプション) | ポインタを保持できる符号付き整数型 (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 (オプション) | ポインタを保持できる符号なし整数型 (typedef) |
[編集]マクロ定数
ヘッダ <cstdint> で定義 | |
符号付き整数 : 最小値 | |
INT8_MININT16_MININT32_MININT64_MIN (オプション) | int8_t, int16_t, int32_t, int64_t 型のオブジェクトの最小値 (マクロ定数) |
INT_FAST8_MININT_FAST16_MININT_FAST32_MININT_FAST64_MIN | int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t型のオブジェクトの最小値 (マクロ定数) |
INT_LEAST8_MININT_LEAST16_MININT_LEAST32_MININT_LEAST64_MIN | int_least8_t, int_least16_t, int_least32_t, int_least64_t 型のオブジェクトの最小値 (マクロ定数) |
INTPTR_MIN (オプション) | intptr_t 型のオブジェクトの最小値 (マクロ定数) |
INTMAX_MIN | intmax_t 型のオブジェクトの最小値 (マクロ定数) |
符号付き整数 : 最大値 | |
INT8_MAXINT16_MAXINT32_MAXINT64_MAX (オプション) | int8_t, int16_t, int32_t, int64_t 型のオブジェクトの最大値 (マクロ定数) |
INT_FAST8_MAXINT_FAST16_MAXINT_FAST32_MAXINT_FAST64_MAX | int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t 型のオブジェクトの最大値 (マクロ定数) |
INT_LEAST8_MAXINT_LEAST16_MAXINT_LEAST32_MAXINT_LEAST64_MAX | int_least8_t, int_least16_t, int_least32_t, int_least64_t 型のオブジェクトの最大値 (マクロ定数) |
INTPTR_MAX (オプション) | intptr_t 型のオブジェクトの最大値 (マクロ定数) |
INTMAX_MAX | intmax_t 型のオブジェクトの最大値 (マクロ定数) |
符号なし整数 : 最大値 | |
UINT8_MAXUINT16_MAXUINT32_MAXUINT64_MAX (オプション) | uint8_t, uint16_t, uint32_t, uint64_t 型のオブジェクトの最大値 (マクロ定数) |
UINT_FAST8_MAXUINT_FAST16_MAXUINT_FAST32_MAXUINT_FAST64_MAX | uint_fast8_t, uint_fast16_t, uint_fast32_t, uint_fast64_t 型のオブジェクトの最大値 (マクロ定数) |
UINT_LEAST8_MAXUINT_LEAST16_MAXUINT_LEAST32_MAXUINT_LEAST64_MAX | uint_least8_t, uint_least16_t, uint_least32_t, uint_least64_t 型のオブジェクトの最大値 (マクロ定数) |
UINTPTR_MAX (オプション) | uintptr_t 型のオブジェクトの最大値 (マクロ定数) |
UINTMAX_MAX | uintmax_t 型のオブジェクトの最大値 (マクロ定数) |
[編集]最小幅の整数定数のための関数マクロ
INT8_CINT16_CINT32_CINT64_C | 引数で指定された値を持つ int_least8_t, int_least16_t, int_least32_t, int_least64_t 型の昇格した型の整数定数式に展開されます (関数マクロ) |
INTMAX_C | 引数で指定された値を持つ intmax_t 型の整数定数式に展開されます (関数マクロ) |
UINT8_CUINT16_CUINT32_CUINT64_C | 引数で指定された値を持つ uint_least8_t, uint_least16_t, uint_least32_t, uint_least64_t 型の昇格した型の整数定数式に展開されます (関数マクロ) |
UINTMAX_C | 引数で指定された値を持つ uintmax_t 型の整数定数式に展開されます (関数マクロ) |
#include <cstdint> UINT64_C(0x123)// expands to a literal of type uint64_t and value 0x123
[編集]書式マクロ定数
ヘッダ <cinttypes> で定義 |
[編集]std::fprintf ファミリーの関数のための書式定数
int または unsignedint 用の 対応する指定子 | 説明 | データ型用のマクロ | ||||
---|---|---|---|---|---|---|
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 または unsignedint 用の 対応する指定子 | 説明 | データ型用のマクロ | ||||
---|---|---|---|---|---|---|
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++ コンパイラはいくつかの状況においてこれらを自動的に定義することによるワークアラウンドを試みるかもしれません。
[編集]例
Run this code
#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言語リファレンス |