インクリメント演算子・デクリメント演算子 |
 |
|
 |
|
演算子一覧(抜粋) |
|
演算子 |
種類 |
書式 |
内容 |
++ |
インクリメント |
++A
A++ |
数値型Aに1を加算する。++Aの場合、代入前に加算。A++の場合、代入後に加算。
例1:a = ++b; 例2:for(int i = 0;i < 10;i++) |
-- |
デクリメント |
--A
A-- |
数値型Aに1を減算する。--Aの場合、代入前に減算。A--の場合、代入後に減算。
例1:a = --b; |
|
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
インクリメント演算子
簡単に変数の値に1 加算できる演算子。
使う記号は「++」(プラスを2つ)。
変数の前または後ろに「++」記号を付けて使う。
変数++ または ++変数
これで、変数 = 変数 + 1と同じ意味になる。
使う対象は数値型の変数。
インクリメントは日本語の「増加」の意味。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
インクリメント演算子の書式 |
|
a++; |
前、または後ろに「++」(プラスプラス)を付ける |
|
|
|
数値型変数への1加算を簡略化して記述できる |
|
通常 |
インクリメント演算子 |
書式 |
変数 = 変数 + 1 |
変数++ または ++変数 |
例 |
a = a + 1; |
a++; |
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
デクリメント演算子
逆に変数の値を 1 減算する演算子。
使う記号は、「--」(マイナス2つ)。
使い方はインクリメント演算子と同じ。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
デクリメント演算子の書式 |
|
a--; |
前、または後ろに「--」(マイナスマイナス)を付ける |
|
|
|
数値型変数への1減算を簡略化して記述できる |
|
通常 |
デクリメント演算子 |
書式 |
変数 = 変数 - 1 |
変数-- または --変数 |
例 |
a = a - 1; |
a--; |
|
|
|
|
 |
|
 |
|
|
|
インクリメント演算子(デクリメント演算子)の使い方 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
インクリメント演算子とデクリメント演算子の違いは
「1足す」か、「1引く」かだけ。
以降はインクリメント演算子で説明する。
デクリメント演算子は「加算」を「減算」に読み替えること。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
インクリメント演算子の加算の例 |
|
・・・ |
|
|
|
|
|
int
num = 0;//number |
|
|
|
|
|
|
|
System.out.println("numの初期値:"
+ num); |
|
|
|
|
|
|
|
num++;//1回目の加算 |
|
|
|
System.out.println("1回目の加算:"
+ num); |
|
|
|
|
|
|
|
num++;//2回目の加算 |
|
|
|
System.out.println("2回目の加算:"
+ num); |
|
|
|
|
|
|
|
num++;//3回目の加算 |
|
|
|
System.out.println("3回目の加算:"
+ num); |
|
・・・ |
|
|
|
|
=(イコール)で変数に代入しないでも1加算される |
|
|
 |
|
 |
|
|
 |
実行結果(出力ウィンドウ) |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
注意点
インクリメント演算子付きの変数を
別の変数へ代入する時
インクリメント演算子が
変数の前に付いている(前置)か
変数の後に付いている(後置)かで、
加算と代入の順番が変わる。
++変数だと
先に加算してから代入。
変数++だと
代入してから後で加算。
結果が変わる。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
インクリメント演算子 前置にした場合 |
|
|
実行例 |
・・・ |
|
|
|
|
|
int
num = 0;//number |
|
|
|
int ans = 0;//answer |
|
|
|
|
|
|
|
ans =
++num;//前置>
インクリメントしてから代入する |
|
|
|
|
|
|
|
System.out.println("number:"
+ num); |
|
|
|
System.out.println("answer:"
+ ans); |
|
・・・ |
|
|
|
|
 |
実行結果(出力ウィンドウ) |
|
|
変数
ans の値は
1 になる。
前置の場合、先に自分に加算。その値を変数に代入する。
以下の計算処理と同じ |
|
|
|
num |
ans |
1、自分に加算する |
num = num + 1; |
1 |
0 |
2、代入する |
ans = num; |
1 |
1 |
|
加算後の値が代入される。 |
|
|
|
 |
|
 |
|
|
 |
|
 |
|
インクリメント演算子 後置にした場合 |
|
|
実行例 |
・・・ |
|
|
|
|
|
int
num = 0;//number |
|
|
|
int ans = 0;//answer |
|
|
|
|
|
|
|
ans =
num++;//後置>
代入してからインクリメントする |
|
|
|
|
|
|
|
System.out.println("number:"
+ num); |
|
|
|
System.out.println("answer:"
+ ans); |
|
・・・ |
|
|
|
|
 |
実行結果(出力ウィンドウ) |
|
|
変数
ans の値は
0 になる。
後置の場合、先に値を代入。その後に自分に加算する。
以下の計算処理と同じ |
|
|
|
num |
ans |
1、代入する |
ans = num; |
0 |
0 |
2、自分に加算する |
num = num + 1; |
1 |
0 |
|
加算前の値が代入される。 |
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
例えばfor文の場合、
前置と後置でカウンターの加算のタイミングが変わる。
後置だとループが終わった後にカウンターが増加する。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
逆に前置で使えば、
ループ前にカウントを増加させることもできる。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
for文のカウンターの増減タイミング まとめ |
|
カウンターを増加させるタイミングを、
ループ開始前、ループ終了後か変更できる。
カウンター変数へ演算子を書く位置によって増減タイミングが変わる。 |
|
|
書式 |
加算タイミング |
++変数 |
ループ開始前に加算 |
変数++ |
ループ終了後に加算 |
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
だが、for文で使うのは
当面は後置だけにすること。
ほとんどの処理はそれで間に合い
やり方も統一できて理解しやすい。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|