PHP документация здесь гласит, что:
Если PHP встречает число за пределами целочисленного типа, оно будет интерпретироваться как число с плавающей точкой.Кроме того, операция, результатом которой является число, выходящее за границы целочисленного типа, вместо этого возвращает число с плавающей запятой.
Но как насчет операции, результатом которой является число, меньшее PHP_INT_MAX?
Посмотрите этот фрагмент кода в качестве примера:
$max_int = 2**31-1 ; // 2147483647
var_dump(PHP_INT_MAX === $max_int); // false
Как вы можете видеть, даже когда операция приводит к действительному значению int, PHP, похоже, приводит результат к плавающей запятой
var_dump(PHP_INT_MAX === (int) $max_int) // true
Мои вопросы:
Переводит ли PHP-интерпретатор результат в float перед выполнением каких-либо вычислений?
Разве PHP не должен вычислять результат и затем устанавливаеттип соответственно?(Имеет смысл, верно?)
Редактировать:
Версия PHP: 7.2.1 32-разрядная
ОС: Windows: 10 x64
Я использую XAMPP