c - RAND_MAX 是否保证 <= UINT_MAX?

标签 c c99

我正在尝试确定 RAND_MAX 是否可以放入 unsigned int 变量中。翻阅C99标准后,我只发现RAND_MAX保证值至少为32767。虽然我知道RAND_MAX扩展为int值,但我不确定它是否是long int。现在我正在使用 unsigned long int 变量,但我想简化我的源代码以使用 unsigned int 变量。

总而言之,这个假设陈述是否适用于 C99 标准:

RAND_MAX <= UINT_MAX <= ULONG_MAX

此外,RAND_MAX 是否明确小于(即不等于)UINT_MAX 或 ULONG_MAX。我意识到 RAND_MAX 的值通常是 Mersenne 素数,但我不确定这是否是标准。

最佳答案

RAND_MAXrand() 可以返回的最大值。由于 rand() 被定义为返回 intRAND_MAX 将不会超过 INT_MAX,因此也不会超过 UINT_MAX

关于c - RAND_MAX 是否保证 <= UINT_MAX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273676/

相关文章:

c - select(2) 保证能够无阻塞地写入文件的数据量是多少

c - 排列的矩阵和子矩阵

c - 需要大型 C99 测试文件

ctags 仅适用于 c99

c - C的智能指针/安全内存管理?

C - 哈希表键的链表

c++ - 如何在同步 Dart native 扩展中处理对于 uint64_t 来说太大的整数?

python - 理论上Python可以是 "Decompiled"到C吗

c - 如何将无符号转换为 uint64_t?

c - 执行快速排序时使用 GCC 编译器在 C 中出现段错误