我在PHP中发现了一些奇怪的计算,例如:
$c=5;
$r = $c + ($c++ + ++$c);
echo $r;
为什么结果是19而不是17?谢谢。
我在PHP中发现了一些奇怪的计算,例如:
$c=5;
$r = $c + ($c++ + ++$c);
echo $r;
你可以在PHP文档中找到相同的推理:虽然优先级,结合性和分组括号控制操作符应用的顺序,但它们不控制术语本身的评估顺序。除非在此规范中明确说明,否则表达式中操作数相对于彼此的评估顺序是未指定的。请参见上述关于包含序列点的运算符的讨论。(例如,在完整表达式$list1[$i] = $list2[$i++]中,左侧的$i的值是旧的还是新的$i,是未指定的。同样,在完整表达式$j = $i + $i++中,$i的值是旧的还是新的$i,是未指定的。最后,在完整表达式f() + g() * h()中,三个函数调用的顺序是未指定的)。