$a=1;
echo $a+$a++; //3
与
$a = 1;
echo $a + $a + $a++; //3
输出都是3,为什么不先算$a++,玩了之后再和前面的$a相加,这样的话不是就是5了么
因为$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; 结果可想而知了。
但这些都是基于猜测,一切由编译器根据实际情况且不违背语言规范地决定。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。