演算子 ++,-- は変数の前にも後ろにも付けられるが,変数の値を変えるタイミングが異なる。
$number++; #後置 ++$number; #前置
上のような例では処理結果に差は出ないが,次の例1のように,他の関数の引数として ++ 付きの変数が用いられるような場合には,前置した場合と後置した場合で,処理結果が違ってくる。
例1 % perl -e '$number=1; print $number++, "\n";' 1 % perl -e '$number=1; print ++$number, "\n";' 2
後置の場合は,print $number, "\n" が実行されてから,$number の数値が1つ大きくなるため,出力されるのが 1 になるのに対し,前置の場合には,最初に数値を1つ大きくしてから,print $number, "\n" が実行されるため,出力されるのは 2 になる。
・print $number++, "\n";' 「print $number, "\n"」を実行 ($number は 1) ↓ $numberの値を1増加 ・print ++$number, "\n";' $numberの値を1増加 ↓ 「print $number, "\n"」を実行 ($number は 2)
例2 % perl -e '$number=1; print $number++ + 1, "\n"' 2 % perl -e '$number=1; print ++$number + 1, "\n"' 3
前置と後置の違いがわかりづらければ,++,-- は関数の引数等には付けず,位置に因る差が生じないような書き方にするとよい。
% perl -e '$number=1; print $number, "\n"; $number++;' 1 % perl -e '$number=1; print $number, "\n"; ++$number;' 1 % perl -e '$number=1; $number++; print $number, "\n";' 2 % perl -e '$number=1; ++$number; print $number, "\n";' 2
% perl -e '$number=1; print $number + 1, "\n"; $number++;' 2 % perl -e '$number=1; print $number + 1, "\n"; ++$number;' 2 % perl -e '$number=1; $number++; print $number + 1, "\n";' 3 % perl -e '$number=1; ++$number; print $number + 1, "\n";' 3