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 演算子

PowerShell