Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
C++ 标准是否保证(通过明确说明或通过逻辑推论隐含)std::uintmax_t可以保存std::size_t?
std::uintmax_t
std::size_t
或者是否有可能std::numeric_limits<std::size_t>::max()大于std::numeric_limits<std::uintmax_t>::max()?
std::numeric_limits<std::size_t>::max()
std::numeric_limits<std::uintmax_t>::max()
是的。
size_t被定义为一个无符号整数类型,其大小足以包含任何对象的大小。uintmax_t被定义为能够存储任何无符号整数类型的任何值。因此,如果size_t可以存储它,uintmax_t可以存储它。
size_t
uintmax_t
size_t来自 C++11 §18.2的定义:
size_t 类型是实现定义的无符号整数类型,它大到足以包含任何对象的字节大小。
来自 C99 §7.18.1.5的定义uintmax_t(通过规范性参考包含在 C++ 中):
以下类型指定了一个无符号整数类型,能够表示任何无符号整数类型的任何值: uintmax_t
以下类型指定了一个无符号整数类型,能够表示任何无符号整数类型的任何值: