欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP中$a=1;$b=&$a;$c=(++$a)+(++$a)+(++$a); $c为啥等于10?

程序员文章站 2022-05-17 11:49:27
...

回复内容:

别讨论未定义行为了好不

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。PHP中$a=1;$b=&$a;$c=(++$a)+(++$a)+(++$a); $c为啥等于10?

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频