为什么前/后增量运算符表现错误?

2024-04-21

为什么 PHP 中变量的值在以下代码中没有一致的行为?

<?php
$piece = 10;
// output is 10 10 10 10 11 12 
echo $piece . $piece . $piece . $piece++ . $piece . ++$piece;

$piece = 10; 
// output is 10 10 10 11 12 
echo $piece . $piece . $piece++ . $piece . ++$piece;

$piece = 10; 
// output is 11 10 11 12 
echo $piece . $piece++ . $piece . ++$piece;
?>

问题是为什么最后一个例子中的第一个输出等于 11?而不是上面 2 个示例中给出的 10。


From http://php.net/manual/en/language.operators.precedence.php http://php.net/manual/en/language.operators.precedence.php:

运算符优先级和结合性仅决定表达式的分组方式,它们不指定计算顺序。 PHP 不(在一般情况下)指定表达式的求值顺序,并且应避免假定特定求值顺序的代码,因为行为可能会在 PHP 版本之间或根据周围的代码而变化。

<?php
$a = 1;
echo $a + $a++; // may print either 2 or 3

$i = 1;
$array[$i] = $i++; // may set either index 1 or 2
?>

换句话说,你不能依赖++相对于表达式的其余部分在特定时间生效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么前/后增量运算符表现错误? 的相关文章

随机推荐