des — Как сделать php-код «echo 62837 & lt; & lt; -16; & Quot; вернуть тот же результат между Windows и Linux?

Как сделать php код «echo 62837» << -16; «вернуть один и тот же результат между windows и linux?

Результат Windows: -176881664

Результат Linux: -759700962142060544

1

Решение

Сдвиг на отрицательное число вызывает исключение в PHP 7+, поэтому это явно недопустимо.

Fatal error: Uncaught ArithmeticError: Bit shift by negative number

В C он вызывает неопределенное поведение, смотрите: Сдвиг влево с отрицательным счетом сдвига

Чтобы ответить на ваш вопрос: Вы не можете заставить код, который вызывает неопределенное поведение, возвращать согласованные результаты на разных платформах. Этот код необходимо изменить, чтобы он не сдвигался на отрицательное число.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]