
上QQ阅读APP看书,第一时间看更新
3.6 整型处理机制
PHP 7以前的版本里,如果向八进制数传递了一个非法数字,例如8或9,则后面其余数字会被忽略。在PHP 7及以后的版本中,将会出现编译错误。
例如下面的代码将会报错:
$a = 0792; // 9是无效的八进制数字
在PHP 8中,如果位移负的位置,将会产生异常,例如:
var_dump(1 >> -1); // ArithmeticError: Bit shift by negative number
在PHP 8中,左位移如果超出位数,就会返回为0,例如:
var_dump(1 << 64); // int(0)
而在PHP 7之前的版本中,运行结果和CPU的架构有关系,比如x86会返回1。
在PHP 7及以后的版本中,右位移如果超出位数,就会返回0或者-1,例如:
var_dump(1 >> 64); // int(0) var_dump(-1 >> 64); // int(-1)