Моя операционная система Windows 7 и 64bit.
Теперь я запускаю следующий код:
echo PHP_INT_SIZE;//prints 4
echo PHP_INT_MAX;//prints 2147483647
Но я думаю, что это должно быть 8
а также (2^63-1)//^ represents power
Может кто-нибудь объяснить мне, почему это произошло?
Целочисленный размер всегда зависит от компилятора / интерпретатора / платформы (это относится и к другим языкам).
В случае PHP в Windows он вообще не поддерживает 64-битные целые, даже если аппаратное обеспечение и PHP являются 64-битными
В Windows x86_64 PHP_INT_MAX — 2147483647. Это связано с тем, что в лежащем в основе c-коде long составляет 32 бита.
Linux на x86_64 использует 64-битную длину, поэтому PHP_INT_MAX будет 9223372036854775807.
Если вам нужна большая точность, вы можете использовать либо GMP или же BCMath расширение.
Совет: никогда не делайте предположений о максимальном значении, которое может обработать тип, если вам не нужно точно, на какой версии / платформе php будет выполняться код.
Ваша ОС 64-битная.
Ваша версия PHP — x86.
Как определить версию PHP, используя константу
PHP_INT_SIZE вернется 4 для версии x86
PHP_INT_SIZE вернется 8 для версии x64
Информация по теме:
Doubleword: 4-байтовый (32-битный) элемент данных
Quadword: 8-байтовый (64-битный) элемент данных
Надеюсь, это понятно 🙂