[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 メーリングリストの案内