PHP_INT_SIZE возвращает 4, но моя операционная система 64-битная

Моя операционная система Windows 7 и 64bit.
Теперь я запускаю следующий код:

echo PHP_INT_SIZE;//prints 4
echo PHP_INT_MAX;//prints 2147483647

Но я думаю, что это должно быть 8 а также (2^63-1)//^ represents power

Может кто-нибудь объяснить мне, почему это произошло?

5

Решение

Целочисленный размер всегда зависит от компилятора / интерпретатора / платформы (это относится и к другим языкам).
В случае 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 будет выполняться код.

5

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

Ваша ОС 64-битная.
Ваша версия PHP — x86.

Как определить версию PHP, используя константу

PHP_INT_SIZE вернется 4 для версии x86

PHP_INT_SIZE вернется 8 для версии x64

Информация по теме:

Doubleword: 4-байтовый (32-битный) элемент данных

Quadword: 8-байтовый (64-битный) элемент данных

Надеюсь, это понятно 🙂

0

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