1

我从php主页阅读了手册

它写道:

// this doesn't go for 
//hexadecimal specified integers above 2^32-1:

var_dump( 0x100000000 );

// output: int(2147483647)

但它有 4.5 个字节,比 int(4 个字节)大,我对其进行了测试。

它输出浮点数。

我不明白他们为什么矛盾?

4

2 回答 2

3

来自关于整数的 PHP 手册页:“如果 PHP 遇到超出整数类型边界的数字,它将被解释为浮点数。此外,导致数字超出整数类型边界的操作将返回而是漂浮。”

由于integer类型太小而无法表示该数字,PHP 会自动将其转换为 a float,这样您就不会丢失数据。这是预期的行为。

但是,您引用的具体示例在手册中显然是错误的。看起来有人在编写手册时出错了,或者可能是自编写手册页以来,超大十六进制文字的行为发生了变化。

于 2012-06-14T19:40:58.670 回答
0

它为我输出一个浮点数:float(4294967296)

演示:http ://codepad.org/otsGOiWf

于 2012-06-14T19:30:30.203 回答