Я очень смущен поведением функции сдвига влево в PHP. Я использую его на двух разных машинах (dev и хостинг), и они дают мне разные ответы. Я отслеживал его до этого расчета:PHP Left Shift дает два ответа на двух разных машинах
(-3941404251) << 5;
На одной машине я получаю ответ -1570884448; с другой стороны, я получаю 0. В обеих системах PHP_INT_MAX = 2147483647. Позднее это 32-разрядная система, а первая - 64-разрядная, хотя php работает как 32-битный процесс и по-прежнему дает тот же ответ.
Я могу только предположить, что это проблема с 32-битным и 64-битным, но есть ли простой способ получить желаемое поведение. Если кто-то может указать мне на функцию или что-то еще, это будет здорово.
Спасибо!
ну, помещая эхо перед этим утверждением производит то же самое. (контекст не является проблемой). – Brendon
@Sarfraz: он показывает свой код: '(-3941404251) << 5' ;;; @Brendon: Я воспроизвожу то, что вы описываете: 0 на 32 бита, и -1570884448 на 64 бит –