PHP 8从入门到精通(视频教学版)
上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)