Recent Entries
Archives
Search


Links
Powered by
Movable Type 2.64

2006年09月27日

インクリメント演算子

挙動(;´Д`)読めなさすぎ
mine@MS-1013 ~
$ perl -e '$a=1;print ++$a + ++$a ;'
6
mine@MS-1013 ~
$ perl -e '$a=1;print ++$a + $a++ ;'
5
mine@MS-1013 ~
$ perl -e '$a=1;print $a + ++$a ;'
4
mine@MS-1013 ~
$ perl -e '$a=1;print $a + $a++ ;'
3
なんで6とか5になるのか分からない。というか
my $a = 1;
my $b = $a + ($a++) + ($a++) + ($a++);
print $a;
でJavaの講義中にインクリメント演算子の挙動について説明してたときに自爆したのが元で、 Javaとかawkは7で、C,C++は4だとか式の中、行の中で$a++のような後置の場合の値の 挙動が…って話だったのに(;´Д`)泥沼化
ちなみに、 phpだと4系~5.0.xと5.1以降で挙動が異なってるようです(;´Д`)

おまけ:by ZiM先生
mine@MS-1013 ~
$ perl -e '$a=1;print ($a++) + ($a++) + ($a++) ;'
1
謎過ぎる(;´Д`)
Posted by minemaz at 2006年09月27日 17:41
トラックバック
このエントリーのトラックバックURL:
http://www.lancard.com/mt/mt-tb.cgi/378

Comments

インクリメントに釣られた。。。
$perl -e '$a=0; print **$a * **$a ;'
あぁ、すっきり~

ポインターのポインターで、挫折したあの頃がなつかしい。

Posted by: urapon at 2006年09月28日 19:06

え~っと昨日の朝くらいにちょっと調べて板に書いてみたけど・・・どうだったでしょう・・・ι

Posted by: 莉菜 at 2006年09月29日 12:10

a++を行内で同じ値として扱うか、都度演算するかてのは
在るかと思うけど(;´Д`)まあ色々。
4とか7はまあすんなりと理解の範囲だったけど、8って
のは予想外でしたわ。
perl -e '$a=1;@r=(10,20,30);$b=$a-@r[$a++]+@r[$a++];print $b;'
12
とか(;´Д`)予想できなさ過ぎる

Posted by: minemaz at 2006年09月29日 17:35
Post a comment









Remember personal info?