【发布时间】:2012-04-05 01:35:50
【问题描述】:
php 手册声称:
$a = 1;
echo ++$a + $a++;
在其语法下是模棱两可的,但对我来说似乎非常清楚。 ++$a 和 $a++ 首先计算,从左到右,所以 ++$a 递增然后返回 2,$a++ 返回 2 然后递增。 2 + 2 之和是 4,所以它会回显 4。但是,The PHP Manual 很清楚地说它可能会打印 4 或 5。
php规范没有规定操作是从左到右吗?
即使它不强制从左到右执行操作,在这种情况下,它不会无论如何都返回4吗?
编辑:我重新阅读了该页面,并指出它是由每个特定的运营商确定的。 + 的优先级最低,并且从左到右进行评估,所以我之前的假设似乎是正确的。我还是不明白。
【问题讨论】:
-
我同意,我认为它应该总是打印 4。
-
hmm,一开始我以为是,但它没有解决为什么无论以哪种方式执行它都不会是 4 的原因——我移动有点太仓促了,似乎无法不过现在撤消我的近距离投票。
标签: php grammar interpreter operator-precedence