getrangemax()为什么32767限制在Windows上?

时间:2012-02-12 10:53:34

标签: php random

PHP在Windows上返回最大可能的随机值32767?

Windows的约束是什么?

echo getrandmax(); //32767

1 个答案:

答案 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经常使用底层系统导出的内容。