c 中的 srand 函数中的“time(null)”之前是否需要“(unsigned int)”?

Med*_*nic 5 c random casting srand

我看过一些关于用 C 生成随机数的指南:有两件事让我想知道:

  1. 据说除了 stdlib.h 和 time.h 库之外,我还必须包含 math.h 库才能使其工作,为什么?(据我所知,srand 和 rand 函数位于 stdlib 中)?
  2. 在示例中,srand 函数的编写方式如下:

    srand((unsingned int)time(NULL);
    
    Run Code Online (Sandbox Code Playgroud)

我正在使用代码块,并且在没有 unsigned int 和数学库的情况下它也可以正常工作,那么为什么他们将其包含在示例中呢?

谢谢!

izo*_*ica 4

该函数time返回一个time_t值,同时srand期望一个unsigned int参数。如果没有强制转换,编译器可能会产生警告,并且根据编译器标志,这可能会导致编译失败。一般来说,避免警告是一种好的做法。

您显示的行中没有任何内容需要包含math.h. 也许这个注释引用了代码的其他部分?