我在命令行中運行此一行代碼:爲什麼Perl在遞增後打印出我不期望的值?
perl -MList::Util=sum -E 'my $x = 0; say sum(++$x, ++$x)'
爲什麼它說"4"
代替"3"
?
我在命令行中運行此一行代碼:爲什麼Perl在遞增後打印出我不期望的值?
perl -MList::Util=sum -E 'my $x = 0; say sum(++$x, ++$x)'
爲什麼它說"4"
代替"3"
?
因爲這兩個增量在計算總和之前執行。
兩者執行後,x = 2
。
2 + 2 = 4.
另請參見[什麼perl代碼示例可能導致未定義的行爲?](http://stackoverflow.com/questions/2176453/what-perl-code-samples-can-lead-to-undefined-behaviour) –