PHP在Windows上返回最大可能的随机值32767?
Windows的约束是什么?
echo getrandmax(); //32767
答案 0 :(得分:9)
根据PHP源代码,getrandmax()
定义为:
PHP_FUNCTION(getrandmax)
{
if (zend_parse_parameters_none() == FAILURE) {
return;
}
RETURN_LONG(PHP_RAND_MAX);
}
PHP_RAND_MAX
定义为:
#define PHP_RAND_MAX RAND_MAX
RAND_MAX
本身被定义为:
/* System Rand functions */
#ifndef RAND_MAX
#define RAND_MAX (1<<15)
#endif
因此,如果定义了RAND_MAX
,则使用它......
...而且,在使用Visual Studio的Windows上,确实有一个RAND_MAX
定义的(引用):
常量
RAND_MAX
是可以返回的最大值rand
函数。RAND_MAX
定义为值0x7fff
。
所以,基本上,getrandmax()
返回32767
,因为它是在Windows上定义的 - 而且PHP经常使用底层系统导出的内容。