最終更新日時:
が更新

履歴 編集

<cstdint>

cstdint(C++11)

<cstdint>ヘッダでは、ビット数が規定された整数型のtypedef、およびマクロを提供する。これらの機能は、std名前空間に属することを除いてC言語の標準ライブラリ<stdint.h>ヘッダと同じである。

符号あり整数型

説明 対応バージョン
int8_t 8ビット幅の符号あり整数(実装するかどうかは処理系定義) C++11
int16_t 16ビット幅の符号あり整数(実装するかどうかは処理系定義) C++11
int32_t 32ビット幅の符号あり整数(実装するかどうかは処理系定義) C++11
int64_t 64ビット幅の符号あり整数(実装するかどうかは処理系定義) C++11
int_fast8_t 少なくても8ビット幅を持ち、演算が高速な符号あり整数 C++11
int_fast16_t 少なくても16ビット幅を持ち、演算が高速な符号あり整数 C++11
int_fast32_t 少なくても32ビット幅を持ち、演算が高速な符号あり整数 C++11
int_fast64_t 少なくても64ビット幅を持ち、演算が高速な符号あり整数 C++11
int_least8_t 少なくても8ビット幅を持つ、最小の符号あり整数 C++11
int_least16_t 少なくても16ビット幅を持つ、最小の符号あり整数 C++11
int_least32_t 少なくても32ビット幅を持つ、最小の符号あり整数 C++11
int_least64_t 少なくても64ビット幅を持つ、最小の符号あり整数 C++11
intmax_t 最も大きい符号あり整数型 C++11
intptr_t ポインタサイズの符号あり整数型(実装するかどうかは処理系定義) C++11

符号なし整数型

説明 対応バージョン
uint8_t 8ビット幅の符号なし整数(実装するかどうかは処理系定義) C++11
uint16_t 16ビット幅の符号なし整数(実装するかどうかは処理系定義) C++11
uint32_t 32ビット幅の符号なし整数(実装するかどうかは処理系定義) C++11
uint64_t 64ビット幅の符号なし整数(実装するかどうかは処理系定義) C++11
uint_fast8_t 少なくても8ビット幅を持ち、演算が高速な符号なし整数 C++11
uint_fast16_t 少なくても16ビット幅を持ち、演算が高速な符号なし整数 C++11
uint_fast32_t 少なくても32ビット幅を持ち、演算が高速な符号なし整数 C++11
uint_fast64_t 少なくても64ビット幅を持ち、演算が高速な符号なし整数 C++11
uint_least8_t 少なくても8ビット幅を持つ、最小の符号なし整数 C++11
uint_least16_t 少なくても16ビット幅を持つ、最小の符号なし整数 C++11
uint_least32_t 少なくても32ビット幅を持つ、最小の符号なし整数 C++11
uint_least64_t 少なくても64ビット幅を持つ、最小の符号なし整数 C++11
uintmax_t 最も大きい符号なし整数型 C++11
uintptr_t ポインタサイズの符号なし整数型(実装するかどうかは処理系定義) C++11

以下のマクロは、整数型の限界値を表す。

符号あり整数型用の限界値マクロ

マクロ 説明 対応バージョン
INT8_MIN int8_tの最小値 C++11
INT8_MAX int8_tの最大値 C++11
INT16_MIN int16_tの最小値 C++11
INT16_MAX int16_tの最大値 C++11
INT32_MIN int32_tの最小値 C++11
INT32_MAX int32_tの最大値 C++11
INT64_MIN int64_tの最小値 C++11
INT64_MAX int64_tの最大値 C++11
INT_FAST8_MIN int_fast8_tの最小値 C++11
INT_FAST8_MAX int_fast8_tの最大値 C++11
INT_FAST16_MIN int_fast16_tの最小値 C++11
INT_FAST16_MAX int_fast16_tの最大値 C++11
INT_FAST32_MIN int_fast32_tの最小値 C++11
INT_FAST32_MAX int_fast32_tの最大値 C++11
INT_FAST64_MIN int_fast64_tの最小値 C++11
INT_FAST64_MAX int_fast64_tの最大値 C++11
INT_LEAST8_MIN int_least8_tの最小値 C++11
INT_LEAST8_MAX int_least8_tの最大値 C++11
INT_LEAST16_MIN int_least16_tの最小値 C++11
INT_LEAST16_MAX int_least16_tの最大値 C++11
INT_LEAST32_MIN int_least32_tの最小値 C++11
INT_LEAST32_MAX int_least32_tの最大値 C++11
INT_LEAST64_MIN int_least64_tの最小値 C++11
INT_LEAST64_MAX int_least64_tの最大値 C++11
INTMAX_MIN intmax_tの最小値 C++11
INTMAX_MAX intmax_tの最大値 C++11
INTPTR_MIN intptr_tの最小値 C++11
INTPTR_MAX intptr_tの最大値 C++11
PTRDIFF_MIN ptrdiff_tの最小値 C++11
PTRDIFF_MAX ptrdiff_tの最大値 C++11
SIG_ATOMIC_MIN sig_atomic_tの最小値 C++11
SIG_ATOMIC_MAX sig_atomic_tの最大値 C++11
WCHAR_MIN wchar_tの最小値 C++11
WCHAR_MAX wchar_tの最大値 C++11
WINT_MIN wint_tの最小値 C++11
WINT_MAX wint_tの最大値 C++11

符号なし整数型用の限界値マクロ

マクロ 説明 対応バージョン
UINT8_MAX uint8_tの最大値 C++11
UINT16_MAX uint16_tの最大値 C++11
UINT32_MAX uint32_tの最大値 C++11
UINT64_MAX uint64_tの最大値 C++11
UINT_FAST8_MAX uint_fast8_tの最大値 C++11
UINT_FAST16_MAX uint_fast16_tの最大値 C++11
UINT_FAST32_MAX uint_fast32_tの最大値 C++11
UINT_FAST64_MAX uint_fast64_tの最大値 C++11
UINT_LEAST8_MAX uint_least8_tの最大値 C++11
UINT_LEAST16_MAX uint_least16_tの最大値 C++11
UINT_LEAST32_MAX uint_least32_tの最大値 C++11
UINT_LEAST64_MAX uint_least64_tの最大値 C++11
UINTMAX_MAX uintmax_tの最大値 C++11
UINTPTR_MAX uintptr_tの最大値 C++11
SIZE_MAX size_tの最大値 C++11

符号あり整数型用の定数値マクロ

以下のマクロは、各整数型の定数値を表す関数マクロである。
例:) int8_t x = INT8_C(1);

マクロ 説明 対応バージョン
INT8_C(n) 8ビット幅を持つ、符号あり整数型の定数値 C++11
INT16_C(n) 16ビット幅を持つ、符号あり整数型の定数値 C++11
INT32_C(n) 32ビット幅を持つ、符号あり整数型の定数値 C++11
INT64_C(n) 64ビット幅を持つ、符号あり整数型の定数値 C++11
INTMAX_C(n) 最も大きい符号あり整数型の定数値 C++11

符号なし整数型用の定数値マクロ

マクロ 説明 対応バージョン
UINT8_C(n) 8ビット幅を持つ、符号なし整数型の定数値 C++11
UINT16_C(n) 16ビット幅を持つ、符号なし整数型の定数値 C++11
UINT32_C(n) 32ビット幅を持つ、符号なし整数型の定数値 C++11
UINT64_C(n) 64ビット幅を持つ、符号なし整数型の定数値 C++11
UINTMAX_C(n) 最も大きい符号なし整数型の定数値 C++11

備考

__STDC_LIMIT_MACROS, __STDC_CONSTANT_MACROS マクロについて

C99 の 7.18.3 <stdint.h> についての脚注で、同ヘッダを C++ でコンパイルする場合に限界値マクロ、定数値マクロを得るためにはこれらのマクロを事前に定義する必要があるものとされていた。

Footnote 219, 220: C++ implementations should define these macros only when __STDC_LIMIT_MACROS is defined before <stdint.h> is included.

Footnote 222: C++ implementations should define these macros only when __STDC_CONSTANT_MACROS is defined before <stdint.h> is included.

しかしその後の C 規格改定でこの脚注は削除され、 C11 では触れられていない。 C++11 は( C++14 も) C99 を参照規格としているが、 18.4.1 [cstdint.syn] p2 に注釈として、これらのマクロは採用されていないことが明記されている。

The macros defined by <cstdint> are provided unconditionally. In particular, the symbols __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS (mentioned in footnotes 219, 220, and 222 in the C standard) play no role in C++.

おそらく上記 C99 の脚注のため、 C++ 処理系によってはヘッダ <stdint.h> および <cstdint> での限界値マクロ、定数値マクロの提供にこれらマクロの定義が必要となっているかもしれない。(特に C++03 対応の処理系が拡張として C99 由来のこれらヘッダを提供していた場合など。)

バージョン

言語

  • C++11

参照