PowerShell: 単項演算子
PowerShellで使用する単項演算子には 「+ - ++ --」があります。
単項演算子は変数や値(被演算子)1つに対して使用する演算子です。 例えば「-$a」は変数「$a」の値が正数なら負数に、負数なら正数に変換します。 「++」はインクリメントと言って、「$a++」は変数「$a」の値を「1」増やします。 つまり「$a = $a + 1」や「$a += 1」と同じです。
各演算子の意味と使用例は次の通りです。
単項演算子 | 意味 | 使用例 |
---|---|---|
+ | 正数を表す。数値に変換する | +$a |
- | 負数を表す。正負を反転する | -$a |
++ | インクリメント(数を1つ加える) | $a++, ++$a |
-- | デクリメント(数を1つ減らす) | $a--, --$a |
「++」(インクリメント演算子)、「--」(デクリメント演算子)は ループ処理の中でループカウンタを1つ増減させたりする時などに使用され、 便利な演算子です。 「$a++」または「++$a」、「$a--」または「--$a」と記述します。 「+」は単項演算子として使用する機会はあまりありませんが、 文字列を数値に変換することがきます。
各演算子の具体的な使用例は次の通りです。
# 「+」 $s = "3" Write-Host $s.GetType() # System.String # 文字列を数値に変換 $s = +$s Write-Host $s.GetType() # System.Int32 # 「-」 $a = 1 Write-Host (-$a) # -1 $a = -1 Write-Host (-$a) # 1 # 「++」 $a = 1 $a++ Write-Host $a # 2 # 「--」 $a = 1 $a-- Write-Host $a # 0
「++」と「--」の前置と後置の違い
インクリメント演算子「++」やデクリメント演算子「--」は、 変数の前に置く前置(例:++$a)と、 変数の後に置く後置(例:$a++)の2種類があります。
どちらも変数の値を1つ増減するのですが、 増減されるタイミングが異なります。 そのため、他の変数に代入する場合は、 代入される値が異なります。
まずは前置インクリメントのコード例です。
$a = 1 $b = ++$a Write-Host $b # 2
前置インクリメントの場合、まず変数「$a」の値が1増やされて「2」になり、 次に変数「$a」の値を変数「$b」に代入します。 結果的に変数「$a」の値は2で、変数「$b」の値も2です。
次は後置インクリメントのコード例です。
$a = 1 $b = $a++ Write-Host $b # 1
後置の場合、まず変数「$a」の値を変数「$b」に代入し、 次に変数「$a」の値を1増やします。 結果的に変数「$a」の値は2で、変数「$b」の値は1です。
このように、「++」や「--」を使って他の変数に値を代入する場合は 前置と後置で代入される値が異なるので注意が必要です。
(まとめ記事: PowerShell 演算子)