[PHP-users 35351] Re: 演算子の評価順位

Shindo shindo @ atsystem.jp
2010年 8月 25日 (水) 19:21:19 JST


進藤です。

ちなみに、PHP4.4.1 では、以下の様な結果になります。

私は、こちらの結果が文法上正しいと思っています。
なぜなら、$a-- は、1 と評価されてから $a がデクリメントされるのが
演算子の評価順として適正だと思います。

$ php -v
PHP 4.4.1 (cli) (built: Nov  3 2005 19:50:09)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
$ php -r '$a = 1; echo ($a + 0 + $a--) . "\n";'
2
$ php -r '$a = 1; echo ($a + $a-- + 0) . "\n";'
2


>関根と申します。
>
>最初の式は
>(($a + 0) + $a--)
>なので、($a + 0) が 1
>そうすると (1 + $a--) なので次の式評価で
>(1 + 1) で $a が 0 となります。
>最終的には ((1 + 0) + 1) なので 2 です。
>
>二番目の式は
>(($a + $a--) + 0) ---> ($a + $a--) と同じ
>なので、($a + $a--) が実行される前に $a-- が評価されて、$a が 0 になり 1
>を返すので、(0 + 1) となり
>最終的には ((0 + 1) + 0) なので 1 です。


PHP-users メーリングリストの案内