0

可能重复:echo ++$a + $a++ 的输出应该是什么

此问题针对 PHP 5.x。

在手册中:http: //php.net/manual/en/language.operators.precedence.php#example-111

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

结果在什么平台或版本上我可以得到 5?似乎 4 每次都是合乎逻辑且正确的答案。

我知道在 Java 中这不是未定义的行为,所以我想知道这是否也在 PHP 5.x 中解决了?

4

2 回答 2

1

未定义的行为意味着它可能会在 PHP 的未来版本中发生变化,因为运算符优先级的规则对于这种表达式是不明确的。

这并不意味着你会在同一个版本中随机获得 4 或 5 个,如果它在未来发生变化,我会感到惊讶。只是页面上呈现的规则模棱两可。

于 2013-02-07T08:54:19.547 回答
0

似乎在 php 5.3 中消失了

尝试过:

while (true) {
    $a = 1;
    $test = ++$a + $a++;
    if ($test != 4) {
            die ($test);
    }
}
于 2013-02-07T08:54:13.223 回答