C#プログラミング入門!初心者向け その11 ループ ①算術演算子 インクリメントとデクリメント

ビジュアルスタジオC#
Visualstudio
みつる君
みつる君

ここでは、C#のループについて学習します。ループとは、「同じ処理を複数回繰り返す」といったコードを書くことです。

  • for文
  • While文
  • foreach文

の3つについて学びます。

マリさん
マリさん

ループを学習する前に、今回は、初心者向けに算術演算子の中でも特に重要なインクリメントとデクリメントについて説明します。

みつる君
みつる君

インクリメントとデクリメントとは、変数の値を1だけ増やしたり減らしたりする演算子です。インクリメントは「++」という記号で表され、デクリメントは「–」という記号で表されます。例えば、int型の変数xに5が代入されているとします。このとき、x++とすると、xの値は6になります。逆に、x–とすると、xの値は4になります。

マリさん
マリさん

インクリメントとデクリメントには、前置と後置という2種類の書き方があります。前置とは、変数の前に演算子を書くことです。後置とは、変数の後ろに演算子を書くことです。例えば、x++は後置インクリメント、++xは前置インクリメントです。同様に、x–は後置デクリメント、–xは前置デクリメントです。

みつる君
みつる君

では、前置と後置の違いは何でしょうか?実は、単独で使う場合にはどちらも同じ結果になります。しかし、他の式の中で使う場合には違いが出てきます。前置の場合には、まず演算子が実行されてから変数が評価されます。後置の場合には、まず変数が評価されてから演算子が実行されます。詳しく説明していきます。

算術演算子 インクリメントとデクリメント

みつる君
みつる君

インクリメントとデクリメントは、今ある値に、1を足し算する、もしくは、1を引き算するときに使います。

インクリメント

みつる君
みつる君

1を足し算するときに使います。まず、説明の為、足し算のコードを示します。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int i = 0;
            Console.WriteLine(i);
            Console.WriteLine(i = i + 1);
            Console.WriteLine(i);
        }
    }
}

みつる君
みつる君

実行結果は

実行結果

0
1
1

みつる君
みつる君

となります。コードの

9行目、変数iの初期化(=0)を指定します。

10行目、この時のiの値は、初期値の0なので、0が表示されます。

11行目、i = i + 1 とすると、i =0 + 1なので、結果としてのiは0でなく、1になり、表示は1になります。

12行目、結果、iは、1に変化します。

理解できましたでしょうか?

前置インクリメント

マリさん
マリさん

この、i=i+1; を

++i;

と単純に書くことができます。

これを、前置インクリメントといいます。

みつる君
みつる君

下記のコードは、

i = i + 1 の部分を

++i

に変更しています。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int i = 0;
            Console.WriteLine(i);
            Console.WriteLine(i++);
            Console.WriteLine(i);
        }
    }
}

みつる君
みつる君

実行結果は

実行結果

0
1
1

みつる君
みつる君

となります。コードの

9行目、変数iの初期化(=0)を指定します。

10行目、この時のiの値は、初期値の0なので、0が表示されます。

11行目、++i は i = i + 1 とほぼ同じ意味なので、表示は1になります。

12行目、結果、iは、1に変化します。

理解できましたでしょうか?

後置インクリメント

みつる君
みつる君

i++

変数の後ろ側に++を書くものを「後置インクリメント」といいます。

同じように、1足し算されますが、タイミングが異なります。

みつる君
みつる君

下記のコードは、

++i の部分を

i++

に変更しています。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int i = 0;
            Console.WriteLine(i);
            Console.WriteLine(++i);
            Console.WriteLine(i);
        }
    }
}

みつる君
みつる君

実行結果は

実行結果

0
0
1

みつる君
みつる君

となります。コードの

9行目、変数iの初期化(=0)を指定します。

10行目、この時のiの値は、初期値の0なので、0が表示されます。

11行目、++i は ここでは表示は変わらず0になります。

12行目、ここで、1加算された結果が表示されます。

理解できましたでしょうか?

デクリメント

みつる君
みつる君

1を引き算するときに使います。まず、説明の為、引き算のコードを示します。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int i = 10;
            Console.WriteLine(i);
            Console.WriteLine(i = i - 1);
            Console.WriteLine(i);
        }
    }
}

みつる君
みつる君

実行結果は

実行結果

10
9
9

みつる君
みつる君

となります。コードの

9行目、変数iの初期化(=10)を指定します。

10行目、この時のiの値は、初期値の10なので、10が表示されます。

11行目、i = i – 1 とすると、i =10 – 1なので、結果としてのiは10でなく、9になり、表示は9になります。

12行目、結果、iは、9に変化します。

理解できましたでしょうか?

前置デクリメント

マリさん
マリさん

この、i=i-1; を

–i;

と単純に書くことができます。

これを、前置デクリメントといいます。

みつる君
みつる君

下記のコードは、

i = i – 1 の部分を

–i

に変更しています。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int i = 10;
            Console.WriteLine(i);
            Console.WriteLine(--i);
            Console.WriteLine(i);
        }
    }
}

みつる君
みつる君

実行結果は

実行結果

10
9
9

みつる君
みつる君

となります。コードの

9行目、変数iの初期化(=10)を指定します。

10行目、この時のiの値は、初期値の10なので、10が表示されます。

11行目、–i は i = i – 1 とほぼ同じ意味なので、表示は9になります。

12行目、結果、iは、9に変化します。

理解できましたでしょうか?

後置デクリメント

みつる君
みつる君

i–

変数の後ろ側に–を書くものを「後置デクリメント」といいます。

同じように、1引き算されますが、タイミングが異なります。

みつる君
みつる君

下記のコードは、

–i の部分を

i–

に変更しています。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int i = 10;
            Console.WriteLine(i);
            Console.WriteLine(i--);
            Console.WriteLine(i);
        }
    }
}

みつる君
みつる君

実行結果は

実行結果

10
10
9

みつる君
みつる君

となります。コードの

9行目、変数iの初期化(=10)を指定します。

10行目、この時のiの値は、初期値の10なので、10が表示されます。

11行目、–i は ここでは表示は変わらず10になります。

12行目、ここで、1減算された結果が表示されます。

理解できましたでしょうか?

あとがき

みつる君
みつる君

このように、インクリメントやデクリメントを使う場合には、前置と後置の違いや評価の順序をよく理解しておく必要があります。そうしないと、バグやエラーの原因になる可能性があります。

侍エンジニアPlus

タイトルとURLをコピーしました