2010年8月25日

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

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

野村

On 2010/08/25, at 19:21, Shindo <shindo@xxxxx> wrote:

> 進藤です。
>
> ちなみに、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 mailing list PHP-users@xxxxx
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年8月25日 20:04
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/97961
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。