PHP文档 here 声明:
但是,如果一个操作的结果小于PHP_INT_MAX,该怎么办?
请将此代码片段作为示例:
$max_int = 2**31-1 ; // 2147483647 var_dump(PHP_INT_MAX === $max_int); // false
如您所见,即使一个操作产生一个有效的int值,PHP似乎也会将结果转换成float
var_dump(PHP_INT_MAX === (int) $max_int) // true
我的问题:
在进行任何计算之前,PHP解释器是否将结果转换为float?
PHP不应该计算结果然后相应地设置类型吗?(有道理吧?)
编辑:
PHP版本:7.2.1 32位
我在用XAMPP
计算时 $max_int = 2**31-1 发动机按步骤执行此操作:
$max_int = 2**31-1
$tmp = 2**31; $max_int = $tmp-1
在这里 $tmp 大于最大整数值并转换为浮点数。结果是有一个浮点减法,从而产生一个浮点。既然它是漂浮的,它就必须保持漂浮。
$tmp