#概要
インクリメント演算子とは ++ の事です。
デクリメント演算子とは -- の事です。
例えば下記の様な場面で目にするのではないでしょうか。
Int32 i = 0, j = 10;
while(/* ループ条件 */)
{
/* ループ内処理 */
i++; /* インクリメント */
j--; /* デクリメント */
}
それぞれカウントアップ、カウントダウンによく用いられます。
しかし、初心者の方だと何気なく使っている事が多いのではないでしょうか?
この記事では、**「どのような動きをするか」**について書いていきます。
テスト環境
プロセッサ :Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz 3.41 GHz 実装メモリ(RAM):32.0GB システム :64ビットオペレーティングシステム 言語 :C# 7.3 .NET Framework 3.5 ツール :Microsoft Visual Studio 2017 #演算子の位置の違い インクリメント/デクリメント演算子は、上記のように変数の後方に置くだけではなく、変数の前方に置くことも出来ます。 変数の後方に置くことを**後置(こうち)**、変数の前方に置くことを**前置(ぜんち)**と言います。Int32 i = 0, j = 0;
i++; /* 後置 */
++i; /* 前置 */
インクリメント/デクリメントはこの後置と前置によって、少しだけ動きが変わります。
その違いについて記述していきます。
##後置の場合
まずは下記コードを見てください。
Int32 i = 0;
/* 注目 */
if (i++ == 0)
{
System.Console.WriteLine("変数 i は 0 です");
}
else
{
System.Console.WriteLine("変数 i は 0 ではありません");
}
System.Console.WriteLine("変数 i は " + i + " でした");
if条件の中で後置インクリメント演算子を利用しています。
この場合、出力結果は下記の通りになります。
変数 i は 0 です
変数 i は 1 でした
このように、i == 0 の条件に一致したにも関わらず、変数 i の中身は 1 になっています。
これはつまり、i == 0 のチェックを行った後に、インクリメント演算子によって加算されているという事です。
##前置の場合
まずは下記コードを見てください。
Int32 i = 0;
/* 注目 */
if (++i == 0)
{
System.Console.WriteLine("変数 i は 0 です");
}
else
{
System.Console.WriteLine("変数 i は 0 ではありません");
}
System.Console.WriteLine("変数 i は " + i + " でした");
if条件の中で前置インクリメント演算子を利用しています。
この場合、出力結果は下記の通りになります。
変数 i は 0 ではありません
変数 i は 1 でした
このように、if条件に一致しません。
後置インクリメントとは違って、i == 0 のチェックを行うよりも先に加算がされています。