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