2

私が知っているように、プリインクリメントは他のすべての操作の前に計算され、ポストインクリメントはすべての操作の後に計算されます。

PHPドキュメントでは、インクリメント(プレインクリメントを正確に理解しているため)の優先順位が非常に高いと言われています。ポストインクリメントの優先順位は非常に低く、実際には最も低いものにする必要があります。

+演算子の優先順位は、1よりもはるかに低くなり++ます(ドキュメントによると)。

だから、今の質問: php docs には、1 つの式の事前増分と事後増分が異なる可能性があることを示す例があります。

// mixing ++ and + produces undefined behavior
$a = 1;
echo ++$a + $a++; // may print 4 or 5

なんで?なんてこと?次のシナリオが非常に明確です。

  1. 前増分 $a
  2. $a と $a の合計を計算する
  3. 転記増分 $a

なぜ予測不可能なのか理解できません。このテーマ (およびこの例) に関する PHP ドキュメントは、 http ://www.php.net/manual/en/language.operators.precedence.php にあります。

4

1 に答える 1

0

4最後$aが生成するために使用Post-incrementされ、最初のように5使用されるため、常に生成されますPre-increment$a

$a = 1;
echo ++ $a +  $a++; // 4

$a = 1;
echo ++ $a + ++ $a; //  5

インクリメント/デクリメント演算子

于 2013-06-21T14:23:49.023 に答える