PHP增量运算符在公式中返回错误的结果

时间:2018-10-14 07:07:06

标签: javascript php operators

我在SoloLearn上挑战,发现了这一点:

var x = 5;
document.write(x * x++);
// will output 25

但是如果我们用PHP编写同样的东西:

$x = 5;
echo $x * $x++;
// it will output 30!

这是东西,不是吗?

那么普通程序员如何向他的祖母解释这一点?

1 个答案:

答案 0 :(得分:1)

原因是Undefined order of evaluation在PHP中:

  

运算符的优先级和关联性仅确定表达式的分组方式,而没有指定求值顺序。在一般情况下,PHP没有指定表达式的计算顺序,而应避免采用假定特定评估顺序的代码,因为行为可能在PHP版本之间或取决于周围的代码而改变。