7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

C#におけるインクリメント/デクリメント演算子の扱い

Last updated at Posted at 2019-04-04

#概要
インクリメント演算子とは ++ の事です。
デクリメント演算子とは -- の事です。
例えば下記の様な場面で目にするのではないでしょうか。

インクリメント/デクリメントの使用例
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 のチェックを行うよりも先に加算がされています。

7
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?