据我所知,在所有其他操作之前计算预增量,在所有操作之后计算后增量。
在php文档中,据说增量(因为我完全理解预增量)具有非常高的优先级。后增量应该具有非常低的优先级,实际上是最低的优先级。
+
运算符优先级低于++
一个(根据文档)。
所以,现在的问题是:在php docs中有一个例子,它表明一个表达式中的preincrement和postincrement可能会有所不同:
// mixing ++ and + produces undefined behavior
$a = 1;
echo ++$a + $a++; // may print 4 or 5
为什么呢? WTF?我看到以下情况非常清楚:
我无法理解为什么它是不可预测的。 关于这个主题(以及这个例子)的PHP文档可以在那里找到: http://www.php.net/manual/en/language.operators.precedence.php
答案 0 :(得分:0)
它始终会产生4
,因为最后$a
正在使用Post-increment
来生成5
,然后像第一个Pre-increment
一样使用$a
}
$a = 1;
echo ++ $a + $a++; // 4
并且
$a = 1;
echo ++ $a + ++ $a; // 5