You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:07:01