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

Shindo shindo @ atsystem.jp
2010年 8月 26日 (木) 09:22:54 JST


進藤です。

http://www.php.net/manual/ja/language.operators.precedence.php
 + - . の結合時の評価は left
 ++ --  の結合時の評価は 結合しない

http://www.php.net/manual/ja/language.operators.increment.php
 $a--  	後置減算子  	$a を返し、$a から 1 を引きます。

これらをベースに考えると
$a = 1;
echo ($a + $a-- + 0)

1)最初に左の$aが評価されて、次に+演算が
   (1 + $a-- +0)
2)次に右側の$aが評価されて、その後、$aはデクリメントされ
   (1 + 1 + 0)
3)式の評価として次の+演算が評価され
   2
が素直かなと

ただ、文法上は式の評価が
 ($a + ($a-- + 0)) と見なすことも可能ですから
 (1 + 0) で $a が0になり
 (0 + (1 + 0))
 1
もアリですね。

ただ、互換性を考えるとPHP4の評価順がPHP5でも再現されて欲しいかなと


>野村です。
>$aと$a--が評価される順番の問題ですね。
>--$aではないので$a--の評価結果が0にはならないはずです。
>ただし、$aが$a--より後に評価されるのであるのなら、0となり得ます。
>A + B の評価がB A A+Bの順で行われるのなら、前者が2、後者が1となり得ますね。
>ただ、そうでないのであれば、前者と後者の値は両方とも2になるはずです。
>文法上、規定はなく実装上の問題と思われます。


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 進藤寿則@アットシステム   _/_/
 e-mail shindo@atsystem.jp     _/
 Phone 022-385-1593 Fax 385-1595  _/



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