gpt4 book ai didi

c - 为什么 rand() + rand() 产生负数?

转载 作者:太空狗 更新时间:2023-10-29 16:13:37 24 4
gpt4 key购买 nike

我观察到 rand() 库函数在一个循环中只被调用一次时,它几乎总是产生正数。

for (i = 0; i < 100; i++) {
printf("%d\n", rand());
}

但是当我添加两个 rand() 调用时,生成的数字现在有更多的负数。

for (i = 0; i < 100; i++) {
printf("%d = %d\n", rand(), (rand() + rand()));
}

有人可以解释为什么我在第二种情况下看到负数吗?

PS:我在循环之前将种子初始化为 srand(time(NULL))

最佳答案

rand() 被定义为返回 0RAND_MAX 之间的整数。

rand() + rand()

可能会溢出。您观察到的可能是 undefined behaviour 的结果由整数溢出引起。

关于c - 为什么 rand() + rand() 产生负数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30821406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com