c – 将未初始化的变量传递给srand是个好主意吗?
发布时间:2020-12-16 06:48:58 所属栏目:百科 来源:网络整理
导读:将未初始化的变量传递给srand而不是时间结果(NULL)是否是个好主意? 它是一个#include和一个函数调用较少. 示例代码: #include stdlib.hint main(void) { { usigned seed; //uninitialized srand(seed); } //other code return 0;} 代替 #include stdlib.h#
将未初始化的变量传递给srand而不是时间结果(NULL)是否是个好主意?
它是一个#include和一个函数调用较少. 示例代码: #include <stdlib.h> int main(void) { { usigned seed; //uninitialized srand(seed); } //other code return 0; } 代替 #include <stdlib.h> #include <time.h> int main(void) { srand(time(NULL)); //other code return 0; } 解决方法
不,不是.
读取未初始化的值会导致未定义的行为.它可以是零,它可以是半随机的 – 但是因此,它可以重复地是相同的值.它也可能导致编译或运行时错误,或者做任何其他完全不可预测的事情. 然后,编译程序的其他人会注意到编译器有关未初始化值的警告并尝试修复它.他可能正确地修复它,或者给予足够复杂的程序,他可能只是将它初始化为零.这就是‘small’ bugs turn into huge bugs. 只需使用printf()替换srand()来尝试您的代码段: #include <stdio.h> int main() { { unsigned seed; printf("%un",seed); } return 0; } 在我的系统上,它反复给出0.这意味着至少有一个系统,你的代码被破坏了:). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |