回复内容:

别讨论未定义行为了好不

PHP: Operator Precedence首先需要了解一下php源码有关引用计数,变量分离的知识。然后我们看下opcode:

line     #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   3     0  E >   ASSIGN                                                   !0, 1
   4     1        ASSIGN_REF                                               !1, !0
   5     2        PRE_INC                                          $2      !0
         3        PRE_INC                                          $3      !0
         4        ADD                                              ~4      $2, $3
         5        PRE_INC                                          $5      !0
         6        ADD                                              ~6      ~4, $5
         7        ASSIGN                                                   !2, ~6
   6     8        SEND_VAR                                                 !2
         9        DO_FCALL                                      1          'var_dump'
        10      > RETURN                                                   1
登录后复制
这可以说是PHP7以下版本的bug怎么没人解释?难道7跟5就着点区别?php7中,$a=1;$b=&$a;$c=(++$a)+(++$a)+(++$a);结果$c是9。php5中,结果就是10.php5中:
$a=1;$b=&$a;$c=(++$a)+(++$a)+(++$a); //$c==10
$a=1;$b=&$a;$c=(++$a); //$c==2
$a=1;$b=&$a;$c=(++$a)+(++$a); //$c==6
php7里$a=1;$b=&$a;$c=(++$a)+(++$a)+(++$a);结果$c是9。
09-10 10:29