开发者社区> 问答> 正文

PHP的自增运算符问题

$a=1;
echo $a+$a++; //3
与
$a = 1;
echo $a + $a + $a++; //3

输出都是3,为什么不先算$a++,玩了之后再和前面的$a相加,这样的话不是就是5了么

展开
收起
小旋风柴进 2016-03-05 16:36:05 2433 0
1 条回答
写回答
取消 提交回答
  • 因为$a++是后置自增运算,是先求值再自增的。 ++$a是先自增再求值的。 这个在c/c++/java/c#。。。中都是一个套路。
    [UPDATE]
    以上说法极不严谨基本是错误的。
    虽然$a++为后置自增运算,即先求值再加1, 但依然不能阻止编译器先+1再求值,只要其+1的结果不影响求值结果。
    比如:$b = $a++; 可以拆解成 $c = $a; $a++; $b = $c; 当然这只是可能
    对于 $a + $a++; 按上边的路子会变成 $c = $a; $a++; return $a + $c; 结果可想而知了。
    但这些都是基于猜测,一切由编译器根据实际情况且不违背语言规范地决定。

    2019-07-17 18:53:45
    赞同 展开评论 打赏
问答分类:
PHP
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载