整型處理機制修改


一、無效八進位數字會報編譯錯誤

無效的八進位數字(包含大於7的數字)會報編譯錯誤,例如下面的程式碼會報錯:     

$i = 0781; // 8 is not a valid octal digit!

舊版的PHP會把無效的數字忽略。

二、位移負的位置會產生異常

 var_dump(1 >> -1);
 // ArithmeticError: Bit shift by negative number

三、左位移如果超出位數返回0

var_dump(1 << 64); // int(0)

舊版本的PHP運行結果和cpu架構有關係。例如x86會回傳1。

四、右位移超出會回傳0或-1.

var_dump(1 >> 64);  // int(0)
var_dump(-1 >> 64); // int(-1)



#