草庐IT

uintmax_t

全部标签

c++ - 为什么 uniform_int_distribution<uintmax_t> 适用于 62 位数字但不适用于 63 或 64 位数字?

我很难理解为什么这段代码是尝试使用新的C++11中的header,在[0,2**62-1]中正确生成随机数但不是[0,2**63-1]或[0,2**64-1].#include#include#include#include#includestaticstd::mt19937engine;//MersennetwisterMT19937voidprint_n_random_bits(unsignedintn);intmain(void){engine.seed(time(0));print_n_random_bits(64);print_n_random_bits(63);print_

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

C++标准是否保证(通过明确声明或通过逻辑推导隐含)std::uintmax_t可以保存std::size_t的所有值?或者std::numeric_limits::max()有可能吗?大于std::numeric_limits::max()? 最佳答案 是的。size_t被定义为无符号整数类型,大到足以包含任何对象的大小。uintmax_t被定义为能够存储任何无符号整数类型的任何值。所以如果size_t可以存储,uintmax_t可以存储。size_t的定义来自C++11§18.2:Thetypesize_tisanimpleme