C ++标准是保证std::uintmax_t
能够保存std::size_t
的所有值吗(通过明确说明或通过逻辑推导隐式)?
或std::numeric_limits<std::size_t>::max()
是否可能大于std::numeric_limits<std::uintmax_t>::max()
?
答案 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