php整型取值范围以及溢出

php -v

PHP 7.2.1 (cli) (built: Jan  4 2018 04:28:54) ( NTS MSVC15 (Visual C++ 2017) x86 )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies

可见本机安装的是32位的PHP。

先来看几个常量

PHP_INT_MAX		自PHP 5.0.5后,最大值可以用常量 PHP_INT_MAX 来表示
PHP_INT_MIN		PHP 7.0.0 及以后的版本中用常量 PHP_INT_MIN 表示最小值
PHP_INT_SIZE	当前系统 Integer 值的字节长度

值得注意的是 PHP 不支持无符号的 integer ,也就是整型都是有符号的,这样它能表示的最大值就会小一半了。

如果给定的一个数超出了 integer 的范围,将会被解释为 float。同样如果执行的运算结果超出了 integer 范围,也会返回 float。也就是整型将会溢出为float。

var_dump(PHP_INT_MAX); 
// int(2147483647)

var_dump(PHP_INT_MIN); 
// int(-2147483648)

var_dump(PHP_INT_SIZE); 
// int(4) 四个字节,也就是32位

var_dump(pow(2,31)-1); 
// float(2147483647),因为 pow(2,31) 已经为2147483648 > 2147483647,所以将会以float运算

可以大致记一下,32位平台21亿,64位9E18

发布了412 篇原创文章 · 获赞 25 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/raoxiaoya/article/details/103693482