回复内容:
别讨论未定义行为了好不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
登录后复制
$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