根据操作码它应该是12.我错了吗?
number of ops: 8
compiled vars: !0 = $x
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------
3 0 E > EXT_STMT
1 ASSIGN !0, 5
5 2 EXT_STMT
3 POST_INC ~2 !0
4 POST_INC ~3 !0
5 ADD ~4 ~2, ~3
6 ECHO ~4
7 7 > RETURN 1
branch: # 0; line: 3- 7; sop: 0; eop: 7; out1: -2
path #1: 0,
Run Code Online (Sandbox Code Playgroud)
编辑
另外($ x ++)+($ x ++); 返回相同的结果(11).实际上,这是问题和操作码调查的主要原因.
Mar*_*ijn 11
它花了我一些读数,但$x=5; $x++ + $x++;工作原理如下:
在$ x ++的情况下,它首先"被使用",然后增加:
++)($ x现在是6,stack = [ 5 ])++)(不再使用,但$ x现在为7)实际上,在这个具体的例子中,如果你愿意echo $x;
输出7.你永远不会将值重新分配回$ x,所以$ x = 7(你增加了两次);