1

今天我注意到 php.ini 中有一个歧义。我运行了这段代码

$i = 5;
$i = $i ++;
var_dump($i); //output 5 instead of 6 

让我们假设 的初始值$i is 5。现在新值应该是 6 但实际上是5。当我做同样的事情时,C++我得到了6预期的结果。是 php 中的一些错误多年来未被注意到还是其他原因。有人可以解释一下吗?

4

3 回答 3

5

为什么你认为这个值应该是6?

$i正在递增,将返回递增之前的值(因为您使用的是后递增运算符)并分配给$i. 似乎合乎逻辑。

于 2012-11-07T16:50:23.333 回答
3

尝试

$i = ++$i;

你会得到正确的结果。

问题是,如果你这样做,$i = $i++$i在语句之后递增,但你将它分配给另一侧的旧变量,所以它永远不会递增变量

于 2012-11-07T16:50:31.820 回答
1

查看递增/递减运算符的手册。你问的行为是正常的,只是违背了你作为 C++ 开发人员的直觉。

$i++首先返回 $i 的值,然后执行并递增,而 ++$i 在返回之前递增 $i。

于 2012-11-07T16:51:43.643 回答