C ++标准是否保证std :: uintmax_t可以保存std :: size_t的所有值?

时间:2013-04-04 23:04:01

标签: c++ c++11

C ++标准是保证std::uintmax_t能够保存std::size_t的所有值吗(通过明确说明或通过逻辑推导隐式)?

std::numeric_limits<std::size_t>::max()是否可能大于std::numeric_limits<std::uintmax_t>::max()

1 个答案:

答案 0 :(得分:30)

size_t被定义为无符号整数类型,其大小足以包含任何对象的大小。 uintmax_t被定义为能够存储任何无符号整数类型的任何值。因此,如果size_t可以存储它,uintmax_t可以存储它。

C ++11§18.2中size_t的定义:

  

type size_t是一个实现定义的无符号整数类型,它足够大,可以包含任何对象的字节大小。

来自C99§7.18.1.5的uintmax_t的定义(它通过规范性引用包含在C ++中):

  

以下类型指定能够表示任何值的无符号整数类型   任何无符号整数类型:

uintmax_t