【发布时间】:2015-03-08 01:20:42
【问题描述】:
我的操作系统是 Windows 7 和 64 位。
现在我运行以下代码:
echo PHP_INT_SIZE;//prints 4
echo PHP_INT_MAX;//prints 2147483647
但我觉得应该是8和(2^63-1)//^ represents power
谁能解释一下为什么会这样?
【问题讨论】:
标签: php operating-system
我的操作系统是 Windows 7 和 64 位。
现在我运行以下代码:
echo PHP_INT_SIZE;//prints 4
echo PHP_INT_MAX;//prints 2147483647
但我觉得应该是8和(2^63-1)//^ represents power
谁能解释一下为什么会这样?
【问题讨论】:
标签: php operating-system
整数大小始终取决于编译器/解释器/平台(这也适用于其他语言)。
对于 Windows 上的 PHP,它根本不支持 64 位整数,即使硬件和 PHP 都是 64 位的
在 windows x86_64 上,PHP_INT_MAX 是 2147483647。这是因为在底层 c 代码中,long 是 32 位。
x86_64 上的 Linux 使用 64 位长度,因此 PHP_INT_MAX 将是 9223372036854775807。
如果您需要更高的精度,您可以使用 GMP 或 BCMath 扩展名。
提示:除非您确切需要代码将在哪个 php 版本/平台上运行,否则切勿对类型能够处理的最大值做出假设。
【讨论】:
您的操作系统是 64 位的。 你的 PHP 版本是 x86。
如何判断PHP版本是否使用常量
对于 x86 版本,PHP_INT_SIZE 将返回 4
对于 x64 版本,PHP_INT_SIZE 将返回 8
相关信息:
双字:一个 4 字节(32 位)的数据项
四字:一个 8 字节(64 位)的数据项
希望这很清楚:)
【讨论】: