Выбор ответа Middle Типы и строгая типизация обновлено

Переполнение int

Вопрос

Что выведет var_dump(PHP_INT_MAX + 1); на 64-битной системе?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: float(9.2233720368547758E+18). Целые в PHP не «заворачиваются», как в C или Java: при выходе за PHPINTMAX результат становится float с потерей точности.

Варианты ответа

  1. int(-9223372036854775808)
  2. int(9223372036854775808)
  3. float(9.2233720368547758E+18)правильный ответ
  4. ArithmeticError: integer overflow

Разбор

Целые в PHP не «заворачиваются», как в C# или Java: при выходе за PHP_INT_MAX результат становится float с потерей точности. ArithmeticError бросает, например, intdiv(PHP_INT_MIN, -1). Для точной арифметики больших чисел есть bcmath и gmp.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.