为何C语言中把srand(time(0))改为srand(time(1))后无输出?
问题解答
你把srand(time(0))改成srand(time(1))后出现异常的核心原因是**time()函数的参数使用错误,触发了未定义行为**:
time()函数的参数要求是指向time_t类型变量的指针,用来存储当前时间值;如果不需要存储时间,正确的做法是传入NULL(也就是0),此时time()会直接返回当前时间戳,作为srand()的随机种子是合理的。- 但你传入了
1,这是一个无效的内存地址(并非合法指针),程序调用time(1)时会触发非法内存访问,操作系统的内存保护机制会终止程序后续代码的执行——包括最后的printf输出语句,所以你看不到随机数结果。
要解决这个问题,只需把参数改回0或者NULL即可。
内容的提问来源于stack exchange,提问作者SHLOK SAXENA
相关产品推荐
相关产品推荐

