23

std::uintmax_tC++ 標準は、 のすべての値を保持できることを(明示的に宣言するか、論理演繹によって暗黙的に) 保証しますstd::size_tか?

または、std::numeric_limits<std::size_t>::max()より大きいことは可能std::numeric_limits<std::uintmax_t>::max()ですか?

4

1 に答える 1

32

はい。

size_t任意のオブジェクトのサイズを格納するのに十分な大きさの符号なし整数型として定義されています。uintmax_t符号なし整数型の任意の値を格納できるように定義されています。ですから、size_t収納できるなら収納uintmax_tできます。

size_tC++11 §18.2 からの定義:

型 size_t は、任意のオブジェクトのバイト単位のサイズを格納するのに十分な大きさの実装定義の符号なし整数型です。

uintmax_tC99 §7.18.1.5 からの定義(規範的参照により C++ に含まれています):

次の型は、任意の符号なし整数型の任意の値を表すことができる符号なし整数型を指定します。

uintmax_t
于 2013-04-04T23:08:25.403 に答える