【发布时间】:2019-04-17 15:47:27
【问题描述】:
自从我在 https://www.tutorialspoint.com/c_standard_library/c_function_rand.htm 上找到这个特定的文档后,我一直在考虑这行特定的代码 srand((unsigned)time(&t));。每当我必须生成一些东西时,我都会使用 srand(time(NULL)) 来排序不要每次运行程序时都生成相同的东西,但是当我遇到这个时,我一直在想:srand((unsigned)time(&t)) 和 srand(time(NULL)) 之间有什么区别吗?因为在我看来它们似乎在做同样的事情。为什么是否使用了 time_t 变量?为什么srand() 中使用了地址运算符?
#include <stdio.h>
#include<stdlib.h>
int main(){
int i,n;
time_t t;
n = 5;
srand((unsigned)time(&t));
for (i = 0; i < n; i++) {
printf("%d\n", rand() % 50);
}
return(0);
}
【问题讨论】:
-
仅仅因为它在互联网上,并不意味着它很好。要记住的东西。
-
这不是位运算符,而是 address-of 运算符。
-
什么意思?
-
@Taegyung 对不起,你是对的。我没有注意这个运算符的使用上下文。
-
您可以通过研究
timelibrary function 来了解time是如何被调用的。它解释了正在发生的事情。演员阵容是你应该熟悉的(除非你知道自己在做什么,否则通常会避免)。