Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 初始化`rand()的两种方法`_C++_Static Cast_Srand - Fatal编程技术网

C++ 初始化`rand()的两种方法`

C++ 初始化`rand()的两种方法`,c++,static-cast,srand,C++,Static Cast,Srand,大多数时候,我看到C伪随机数生成器的初始化,其内容如下: srand(time(NULL)); 无论如何,我看到了使用< /P>的C++代码 srand(static_cast<unsigned int>(time(0))); srand(静态_-cast(时间(0)); 这两条线是否等同于初始化的优劣,还是有理由倾向于C++中更冗长的方式? 未指定的确切类型。它通常是一个有符号整数。接受一个无符号(即无符号整数)参数 因此,返回的类型与std::srand期望的类型不匹配。

大多数时候,我看到C伪随机数生成器的初始化,其内容如下:

 srand(time(NULL));
无论如何,我看到了使用< /P>的C++代码
srand(static_cast<unsigned int>(time(0)));
srand(静态_-cast(时间(0));

这两条线是否等同于初始化的优劣,还是有理由倾向于C++中更冗长的方式?

未指定的确切类型。它通常是一个有符号整数。接受一个

无符号
(即
无符号整数
)参数

因此,返回的类型与
std::srand
期望的类型不匹配。根据std::time\t的确切类型,编译器可能会以静默方式对其进行转换,但可能不会

例如,在Windows上使用Visual C++编译器返回一个64位整数。在不损失精度的情况下,很难将其转换为

unsigned int
,编译器可能会(应该?我不记得了)发出警告

因此,请执行强制转换,以确保将正确的类型传递给
std::srand


<> P>随着在参数>代码<时间>代码>中的差异,C++中的代码> 0 < /CODE>已经在标准化被隐式转换为空指针之前。IIRC modern C(从C99开始?)也会这样做,但情况并非总是如此。所以C++中空指针的符号常量<代码> null <代码>,C++中的整数常量<代码> 0代码>代码> < /P>
<>注意,自从C++ 11,建议的空指针是.< /p>不是你的问题的答案,但是应该是C++中的首选(11或更高)。如果您不编写显式强制转换,它将隐式执行相同的转换。您应该注意以下内容:。我记得其中一个代码是由windows用户编写的,现在可以理解了!