2

据我所知,预增量是在所有其他操作之前计算的,后增量是在所有操作之后计算的。

在 php 文档中,据说增量(据我所知是预增量)具有非常高的优先级。后增量应该具有非常低的优先级,实际上是最低的优先级。

+运算符优先级++比一个低得多(根据文档)。

所以,现在的问题是:在 php 文档中有一个例子,它表明一个表达式中的前增量和后增量可以变化:

// 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 回答