c++标准是否保证std::uintmax_t可以保存std::size_t的所有值?
Does the C++ standard guarantee that std::uintmax_t can hold all values of std::size_t?
c++标准是否保证(通过显式声明或通过逻辑推导隐式)std::uintmax_t
可以保存std::size_t
的所有值?
或者std::numeric_limits<std::size_t>::max()
可能大于std::numeric_limits<std::uintmax_t>::max()
可以。
size_t
被定义为一个无符号整数类型,大到足以包含任何对象的大小。uintmax_t
被定义为能够存储任何无符号整数类型的任何值。因此,如果size_t
可以存储它,uintmax_t
也可以存储它。
c++ 11§18.2中size_t
的定义:
size_t类型是一个实现定义的无符号整数类型,它足够大,可以包含任何对象的字节大小。
C99§7.18.1.5中uintmax_t
的定义(通过规范引用包含在c++中):
下面的类型指定了一个能够表示任何值的无符号整数类型任意无符号整数类型:
uintmax_t
相关文章:
- 为什么这个 std::queue/指向结构的指针列表直到 List.Size() == 0 才释放内存?
- 为什么 GCC 不能假设 std::vector::size 在这个循环中不会改变?
- 迭代器库中的 std::size() 不适用于传递给函数的 C 样式数组
- std::string.size() 未知行为
- 从 std::string 到 std::array<char,size> 的 memcopy 额外数据是否是一种未定义的行为?
- 使用 std::size 来自非 const 上下文
- 错误:'class std::unique_ptr<std::set<long unsigned int> >'没有名为 'size' 的成员
- 为什么我必须在初始化 std::array<SomeStruct, size> 时指定每个项目的类型C++
- 为什么会出现错误:size不是std的成员
- 没有名为'size'在名称空间'std'
- std::具有initializer_list和size的unordered_map构造函数在main中编译,但不在类定
- 使用 constexpr 作为 std::array size
- std::span.size() vs array/vector size
- std ::向量距离函数如何给出比.size()更高的值
- 'std::out_of_range' what(): vector::_M_range_check: __n (即 0) >= this->size() (即 0)
- 在 c++ 中,std::string::size() 不计算修改后的字符串长度
- std::list.size() 如何具有恒定的复杂性?
- std::size 和 std::empty 的专业化与模板不匹配
- 为什么没有std::size
- 是否有一些像 std::size() 这样的函数