インクリメント演算子「++」
インクリメント演算子を使用すると、変数に代入されている数値に1を加算することができます。インクリメント演算子は、変数の前か後につけることができます。
# インクリメント(後置) $num++; # インクリメント(前置) ++$num;
インクリメント演算子は加算演算子を使った次の記述と同じ意味になります。
$num = $num + 1;
インクリメント演算子はfor文の中で頻繁に利用されます。
for (my $i = 0; $i < 10; $i++) { print "$i\n"; }
このサンプルプログラムでは、0から10が出力されます。
前置のインクリメントと後置のインクリメントの違い
前置のインクリメントと後置のインクリメントは単独で利用される場合は、意味が同じですが、代入されるなど戻り値が利用される場合は、意味が異なります。
前置のインクリメント
前置のインクリメントの場合は、インクリメントされた値が返されます。
my $num1 = 0; my $num2 = ++$num;
「$num1」がインクリメントされて1になります。この1という値が返されて「$num2」に代入されます。
代入の場合で解説しましたが、サブルーチンに値を渡す場合の例も挙げておきます。funにはインクリメントされた値が渡されます。
func(++$i);
後置のインクリメント
前置のインクリメントの場合は、インクリメントされる前の値が返されます。
my $num1 = 0; my $num2 = $i++;
「$num1」がインクリメントされ1になりますが、インクリメントされる前の値である0が$num2に代入されます。
上記の二つは$kに入る値が異なります。最初の場合は、$kには、1が入ります。二つ目の場合は、$kには0が入ります。
代入の場合で解説しましたが、サブルーチンに値を渡す場合の例も挙げておきます。funにはインクリメントされる前の値が渡されます。
func($i++);
デクリメント演算子
デクリメント演算子は、インクリメント演算子の反対で、1を減算することができる演算子です。デクリメント演算子については以下で詳しく解説しています。