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 に答える