ywork2020.com

Title

インクリメント演算子で変数に値を代入する

目次 (INDEX)

インクリメント演算子 とは

インクリメント演算子 とは次の意味からなる演算子です。
increment
読み: インクリメント
意味: 増加、増分

目次に戻る

インクリメント演算子 の概要

インクリメント演算子は、今ある数に 1 をプラスするための演算子です。

プログラムを見ていると 「 i++」 とか 「 ++i 」 と記述してあるコードを見たことはないでしょうか。 この 「 ++ 」 をインクリメント演算子といいます。また、この逆の働きをする演算子にデクリメント演算子があり、 「 -- 」 で記述します。

このページではインクリメントで説明していきますが、デクリメントも同じ考え方で数値が 1つマイナスされるということになるので、 参考にしていただければ幸いです。

それでは、まず 「 i++ 」の「 i 」の部分についてですが、i は変数となり、「 i 」 でなくても 「 j 」 でも問題ありません。 あくまでも変数なので自分の分かりやすい変数名にしても構いません。

この演算子は、その特性上の仕様から、主にプログラムの制御文である for 制御文while 制御文 などでよく使われます。

その仕様というのを次のサンプルとサンプルコードで見ていきたいと思います。

目次に戻る

サンプルでの検証

ここからは、実際にプログラムを動かしながらインクリメント演算子の働きについて、動作を見ていきたいと思います。

まず、検証するにあたって変数が必要ですので下記のコードで変数を宣言します。 ここでは変数名は 「 a 」 と 「 b 」 にします。変数の初期値はどちらも数値の 「 0 」 にしておきます。

let a = 0;
let b = 0;

それでは、次にその変数の値をページ上に書き出してみます。 ページ上に直接の書き出し処理を行う場合には document オブジェクトの write メソッドを使用します。

document.write("変数 a = ", a, "<br>");
document.write("変数 b = ", b);
実行結果:

目次に戻る

インクリメント演算子で 1 プラスする

それでは、変数 a の方にインクリメント演算子を使って 1 をプラスしてから書き出してみます。

++a;
document.write("変数 a = ", a);
実行結果:

では、次は変数 b の方にインクリメント演算子を使って 1 をプラスしてから書き出してみます。

b++;
document.write("変数 b = ", b);
実行結果:

結果を見ていただいて、a も b も 1 がプラスされていることを、お分かりいだだけたと思います。

しかし、処理が少し違うところにも、お気づきになられたと思います。 そうです。 「 ++a 」 と 「 b++ 」 の部分ですよね。

これは 「 前置きインクリメント 」 と 「 後置きインクリメント 」と呼ばれるもので 「 ++ 」 を変数の前に置くか、 変数の後に置くかで若干ですが、処理が違うというものです。

それでは、次に前置きと後置きの差について実際にプログラムを実行して見ていきたいと思います。

目次に戻る

前置きと後置きの違いについて

ここからは、もう 1つの変数を使いたいと思いますので変数を宣言します。

let z;

上記のコードで 「 z 」という変数を宣言しました。 この変数 z に a と b の値を代入しながら前置きと後置きのインクリメント演算子の差を見ていきます。

前の章と同じく、インクリメントには 「 ++a 」 と 「 b++ 」 を使っての検証となります。 前章の引き続きで同じ a と b の変数を使いますので、現在の値は両変数とも 「 1 」 になっています。

それではプログラムを実行していきます。

z = ++a;
document.write("変数 a = ", a, "<br>");
document.write("変数 z = ", z);
実行結果:

z = b++;
document.write("変数 b = ", b, "<br>");
document.write("変数 z = ", z);
実行結果:

結果を見て、違いがお分りいただけたと思います。 そうなんです。後置きインクリメントである変数 b の値を変数 z に代入した場合、b と z の値には差がありますよね。 これが前置きと後置きの差になるわけです。

前置きインクリメントを使うと、まず右辺での計算処理が先に行われて、次に左辺への代入という処理になるわけです。 また、後置きインクリメントでは、左辺への代入が行われた後で右辺での計算処理がされるというわけです。

目次に戻る

まとめ

インクリメント演算子とは、変数に対して、今ある数に 1 をプラスするための演算子でした。 この演算子には 「 前置き型 」 と 「 後置き型 」 がありますが、違いは下記の通りでした。

  • 変数Z = ++変数A; (前置き): 代入処理を含む処理の場合に先に右辺の計算をする
  • 変数Z = 変数A++; (後置き): 代入処理を含む処理の場合に後で右辺の計算をする

これが、前置きインクリメントと後置きインクリメントの違いとなります。 ということは、代入処理がないインクリメント演算子だけの単体コードでは違いはないということになり、 どちらを使っても間違いではないということになります。

ただし、「 代入処理を併用したコードでは前置きと後置きを意識して使わないと差が生まれる 」 という結論でした。

補足的ではありますが、最後に for 制御文 の簡単なコードを参考に見てみましょう。

for(let i = 1; i < 6; ++i){document.write(i);}
実行結果:

for(let i = 1; i < 6; i++){document.write(i);}
実行結果:

以上の結果を見ても分かるように前置きと後置きの処理に差はありませんでした。

目次に戻る